使用所选插件进行jquery验证
我创建了一个select元素,设置为允许多重选择,并将select插件与optgroup集成在一起,如下所示:使用所选插件进行jquery验证,jquery,jquery-validate,jquery-chosen,Jquery,Jquery Validate,Jquery Chosen,我创建了一个select元素,设置为允许多重选择,并将select插件与optgroup集成在一起,如下所示: <select id="attributes" name="data[attributes]" multiple> <optgroup label="Color" class="max_one"> <option value="Black">Black</option> <option value="Yellow"&g
<select id="attributes" name="data[attributes]" multiple>
<optgroup label="Color" class="max_one">
<option value="Black">Black</option>
<option value="Yellow">Yellow<option>
<option value="Red">Red</option>
</optgroup>
<optgroup label="Year">
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
</optgroup>
<optgroup label="Top Speed" class="max_one">
<option value="120">120m/h</option>
<option value="140">140m/h</option>
<option value="160">160m/h</option>
</optgroup>
</select>
黑色
黄色的
红色
2006
2007
2008
120m/h
140m/h
160m/h
用户可以从每个optgroup中选择多个值
我想向jquery验证添加一个方法,并确保使用jquery验证从类为.max\u one的每个optgroup中选择至少且仅选择1个选项
我已经尝试了require\u from_group:[1,“.max\u one”]函数,但它只适用于普通复选框。@Sparky说它不具备jquery validate的功能,但类似的功能可能会对您有所帮助
$('#attributes').on('change', function () {
$('.max_one').each(function () {
$('option').each(function () {
if ($('option:selected').length == 1) {
// Valid
} else {
// Invalid
}
});
});
});
require\u from\u group
与复选框元素无关。它在一组输入元素上工作<代码>输入,选择
或文本区域
是唯一有效的元素
但是,在您的情况下,只有一个输入元素。。。单个选择。由于option
元素是select
元素的子元素,因此它们不会自行验证
换句话说,require\u from_group
方法不会将选项
或optgroup
元素识别为输入元素;只有父级选择作为单个输入。更正输入元素@Sparky。但是没有办法计算class.max\u one的每个optgroup的所选选项?使用addMethod()?@mallix,当然,要计算它们,但这样做的验证超出了插件的范围。如果您正在寻找jQuery验证解决方案,我认为这是不可能的。我正在考虑这种解决方案。在jquery验证中,必须有一种方法将其放在自定义方法中。这看起来很麻烦,因为可能存在这样的情况,如果无效,用户将不得不从零开始多次。这取决于,这是一个非常大的表单,我正试图避免将每个组拆分为单个选择下拉列表。与所选插件(自动完成搜索)相结合,这是一个公平的解决方案。如果您提出了一个好的解决方案,可以肯定地说,它将是用jQuery Validate标记的数千个SO问题中唯一的一个。