我有一个多选,我需要强制用户选择最多两个选项,仅此而已。
我正在尝试这个:
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]);
});
它有效但我在选择中获得了所有选项。这是为什么?这是走路的正确道路吗?有没有更好的方法来进行这种检查?
非常感谢!
答案 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()
在这种情况下返回一个数组。