Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用所选插件进行jquery验证_Jquery_Jquery Validate_Jquery Chosen - Fatal编程技术网

使用所选插件进行jquery验证

使用所选插件进行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元素,设置为允许多重选择,并将select插件与optgroup集成在一起,如下所示:

<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问题中唯一的一个。