JQuery validate不验证多选选项

时间:2014-09-08 16:19:35

标签: jquery jquery-validate

我有一个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();

        }
    });

2 个答案:

答案 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
});

DEMO 2:http://jsfiddle.net/bdw1nv9z/1/

答案 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>