我有一个jQuery validate插件,对于文本框工作正常,但对于select选项,它不会显示任何验证消息。
不确定哪里出错了。
HTML
<select id="idselect" name="id="idselect"" class="multiselect" multiple="multiple">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
JQuery的
$.validator.addMethod("needsSelection", function (value, element) {
var count = $(element).find('option:selected').length;
return length > 0;
});
$('#myForm').validate({
rules: {
idselect: {needsSelection : true},
agree: "required"
},
messages: {
idselect: { needsSelection: "Select atleast one" },
agree: ""
},
submitHandler: function (form) {
form.submit();
}
});
答案 0 :(得分:2)
引用OP :
&#34;它不会显示任何验证消息。&#34;
它无效,因为name
属性的价值很难......
name="id="idselect""
将其更改为name="idselect"
并显示消息:
DEMO:http://jsfiddle.net/tmuyu2r2/
根据您的功能,您根本不需要submitHandler
选项,form.submit()
与默认设置相同。换句话说,在这里过分没有任何意义。
修改强>:
不确定为什么需要自定义方法。如果您只需要强制选择至少一个选项,那么非常简单的required
方法可以轻松处理。
引用OP的评论:
&#34;在你的小提琴中,即使我选择了一个项目,它仍会显示验证消息&#34;
最后,为了在选择后立即强制进行验证,您需要捕获change
事件并在多选元素上触发.valid()
方法。
$("#idselect").on("change", function() { // whenever a selection is made
$(this).valid(); // force validation in order to remove any messages
});
答案 1 :(得分:-1)
您需要在select中添加具有空值的选项标记。如果没有空值标记,则不会在下拉列表上进行空验证。
<select id="idselect" name="id="idselect"" class="multiselect" multiple="multiple">
<option value="">Select An Option</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>