我创建了一个select元素,设置为允许多个选择和集成的选择插件与optgroups如下:
<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>
用户可以明显地从每个optgroup中选择多个值。
我想在jquery验证中添加一个方法,并确保使用jquery验证从 .max_one 的每个optgroup中选择至少且仅1 选项。
我尝试了 require_from_group:[1,“。max_one”] 功能,但它仅适用于普通复选框。
答案 0 :(得分:1)
@Sparky说它不具备jquery-validate的功能,但也许这样的东西会对你有帮助。
$('#attributes').on('change', function () {
$('.max_one').each(function () {
$('option').each(function () {
if ($('option:selected').length == 1) {
// Valid
} else {
// Invalid
}
});
});
});
答案 1 :(得分:0)
require_from_group
与复选框元素没有任何关系。它适用于输入元素的“组”。 input
,select
或textarea
是唯一有效的元素。
但是,在您的情况下,只有一个输入元素......一个select
。由于option
元素是select
元素的子元素,因此它们不会自行验证。
换句话说,require_from_group
方法不会将option
或optgroup
元素识别为输入元素;只有父select
作为单个输入。