我有4个相同的下拉列表,用户必须至少选择第一个。所以我为第一个添加了一个验证。如果第一个下拉列表的值为0,则显示错误消息。
HTML:(第一个下拉列表)
<select id="form22" class="select form22" name="m22">
<option selected="selected" value="0"> Choose....</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
jquery:
$.validator.addMethod("check_item_dropdown", function(value, element) {
return this.optional(element) || value == 0 ;
}, "Please select an item from the dropdown list.");
$().ready(function() {
$("#response").validate({
rules: {
form22:{
check_item_dropdown: true
}
},
messages: {
form22:{
check_item_dropdown: " Please select an item."
}
}
});
});
我不知道如果我选择了"选择……"为什么没有错误消息。我的逻辑正确吗?
我认为这里有两个问题。一个是,从您发布的代码的外观来看,form22是可选的。要解决此问题,请在验证器设置中添加required:true,如下所示:
form22:{
check_item_dropdown: true,
required:true
}
另一种情况是,如果值为0,则从该方法返回true。你希望它不是0,对吧?所以你的支票应该是有价值的!==0不是值==0。
使您的选择选项如下所示:
<option selected="selected" value=""> Choose....</option>
在验证脚本中使用名称属性m22
而不是id属性form22
。
希望这对你有用。
已编辑
<script type="text/javascript">
$.validator.addMethod("check_item_dropdown", function(value, element) {
if(value == 0 || value == '') {
return false;
} else {
return true;
}
}, "Please select an item from the dropdown list.");
$().ready(function() {
$("#response").validate({
rules: {
m22:{
check_item_dropdown: true
}
},
messages: {
m22:{
check_item_dropdown: " Please select an item."
}
}
});
});
</script>
我对您的validator method
、if
条件进行了一些更改,以检查value
是0
还是blank
。并且在验证中设置了name属性,我也在本地主机中进行了测试。
同时从选项中删除selected="selected"
。
它现在起作用了。试试这个,让我知道这是否适合你。
您的addmethodsomewhere问题。。。试试这个addmethod。。。
$.validator.addMethod("check_item_dropdown",function(value, element, param)
{
var notDefault = true;
if(element.selectedIndex == 0)
notDefault =false;
return this.optional(element)|| notDefault;
}, "Please select an item from the dropdown list.");
$(document).ready(function() {
$("#response").validate({
rules: {
m22:{
check_item_dropdown: true
}
}
});
});