使用所选插件进行jquery验证

时间:2014-08-26 14:35:22

标签: jquery jquery-validate jquery-chosen

我创建了一个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”] 功能,但它仅适用于普通复选框。

2 个答案:

答案 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与复选框元素没有任何关系。它适用于输入元素的“组”。 inputselecttextarea是唯一有效的元素。

但是,在您的情况下,只有一个输入元素......一个select。由于option元素是select元素的子元素,因此它们不会自行验证。

换句话说,require_from_group方法不会将optionoptgroup元素识别为输入元素;只有父select作为单个输入。