我有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."
}
}
});
});
如果我选择“选择......”,我不知道为什么没有错误信息。我的逻辑是否正确?
答案 0 :(得分:1)
我认为这里有两个问题。一个是你发布的代码的外观可以选择form22。要解决此问题,请在验证程序设置中添加required:true,如下所示:
form22:{
check_item_dropdown: true,
required:true
}
另一个是如果值为0,则从方法返回true。你希望它不是0,对吧?所以你的检查应该是值!== 0不是值== 0。
答案 1 :(得分:0)
而不是id属性form22
,请在验证脚本中使用名称属性m22
。
希望这对你有用。
已修改
<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属性,我也在我的localhost中进行了测试。
同时从选项中删除selected="selected"
。
现在正在工作。试试这个,让我知道这是否适合你。
答案 2 :(得分:0)
将您的选择选项设为:
<option selected="selected" value=""> Choose....</option>
答案 3 :(得分:0)
你的addmethod某处问题...尝试这个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
}
}
});
});