关于jquery validate plugin的自定义验证,需要在多个select中计算元素

时间:2010-04-27 13:17:40

标签: jquery validation jquery-validate

我有一个多选,我需要强制用户选择最多两个选项,仅此而已。

我正在尝试这个:

jQuery.validator.addMethod("morethantwo", 
    function(value, element) {

        var foo = [];
        $(element+' :selected').each(function(i, selected){
            foo[i] = $(selected).text();
            alert(foo[i]);
        });
        return true;

    },"Max two options." 
);

问题是我得到了:

uncaught exception: Syntax error, unrecognized expression: [object HTMLSelectElement]

错误。如果我这样做:

$(element).each(function(i, selected){
            foo[i] = $(selected).text();
            alert(foo[i]);
        });

它有效但我在选择中获得了所有选项。这是为什么?这是走路的正确道路吗?有没有更好的方法来进行这种检查?

非常感谢!

1 个答案:

答案 0 :(得分:2)

为了回答它破坏的原因,element是一个DOM元素,而不是一个字符串,所以在那个代码中你试图做DOMElement+string ...这不起作用:)包装DOM元素并使用.find().children()来获取选项。

知道原因为何,您可以像这样编写规则来检查所选的选项:

jQuery.validator.addMethod("maxtwo", function(value, element) {
  return $(element).find(":selected").length <= 2;
},"Max two options.");

Check here for a demo of the above code

如果您严格处理<select multiple>,您也可以这样做:

 return $(element).val().length <= 2;

由于.val()在这种情况下返回一个数组。