Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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 - Fatal编程技术网

jQuery验证动态输入数组

jQuery验证动态输入数组,jquery,jquery-validate,Jquery,Jquery Validate,当这是一个动态数组时,如何验证?像这样: <select class="escolhaVidro id_material" name="id_material[]" id="id_material"> 奇怪的是,这个插件不起作用: $(this).validate({ rules: { id_material : { required : true } } }); 我还尝试在中使用CSS类

当这是一个动态数组时,如何验证
?像这样:

<select class="escolhaVidro id_material" name="id_material[]" id="id_material">
奇怪的是,这个插件不起作用:

$(this).validate({
    rules: {
        id_material : {
            required : true
        }
    }
});
我还尝试在
中使用CSS
,但效果不佳

引用OP:“奇怪的是,这个插件不起作用:
$(this).validate({…});

这并不奇怪。它不起作用,因为你没有真正的目标。
$(this)
没有任何意义的上下文或范围

您必须正确定位
元素:

例如,通过
id
。。。

…或以您想要验证的实际
为目标


下面是一个如何验证
选择
元素的通用示例,您可以轻松地适应您的情况:

重要
选择
元素中的第一个或默认的
选项
必须
包含
值=“”
,否则所需的
规则将失败。如果出于任何原因,您无法将第一个
选项的
值设置为
”,则自定义方法解决方法和

HTML


请选择。。。
选择1
选择2
选择3
....
由于您的
名称
包含括号,
[]
,:

jQuery

$(文档).ready(函数(){
$('#myform')。验证({//初始化DOM就绪中的插件
//其他选择,
规则:{
“id_材料[]”:{
必填项:true
}
},
});
});

以上答案假设您知道
select
元素的
名称。但是,如果您不知道
名称
,您有几个选项

1)
选择
元素中使用
class=“required”
。。。

演示:

否则,这将仅将规则应用于一个
选择
的元素。。。


编辑:

在评论中引用OP:


在功能内部执行以下验证:
$('formOrcamento').live('submit',function(){…})然后
$(this.validate({…})引用:
$('#formOrcamento')。验证
({...});

同:

$('#formOrcamento').live('submit', function() {
    $(this).validate({ ... });
});
是的,这就是为什么它坏了

只在DOM上调用一次,以便初始化插件。您不应该将其放入
submit
处理程序中。Validate插件已经有了自己的内置事件处理程序,可以捕获表单的submit按钮

按照上面我的工作JSFIDLE演示设置代码


编辑2:

在评论中引用OP:

我使用的是
jqueryui
,这将添加到“选择”选项中:
style='display:none'
。如果我通过Firebug删除
显示:无
, 然后选择验证并正确显示标签错误。 可能会发生什么


默认情况下,验证插件忽略隐藏元素。您需要通过将
ignore:[]
添加到
validate()
来关闭该选项:


有关更多信息,请参阅。

只需使用emtpy括号,并确保包含括号的名称位于引号中(请参阅):


--您似乎没有正确使用它。您使用
$(此)
的目标是什么?您必须将
表单作为目标。它正是我所拥有的。如果它包含在
live('submit')
处理程序函数中,那么它实际上并不完全是您所拥有的。这就是代码无法工作的原因。在函数内部执行以下验证:
$('#formOrcamento').live('submit',function(){…})
然后
$(this).validate({…})引用:
$('#formOrcamento')。验证({…})@MayW。将
.validate()。这是不必要的,也是最可能的原因。按照上面我的工作演示查看我的编辑。我正在使用jquery ui,这将添加到
select
中:
style='display:none'
。如果我通过Firebug删除
显示:无
,则会发生
选择
验证并正确显示
标签
错误。可能会发生什么?默认情况下,验证插件会忽略隐藏的元素。您需要通过将
ignore:[]
添加到
validate()
来关闭该选项。请看:我应用了指示的修复程序,而且效果更好。但是,只有一个
select
正在验证。然后修改为,正如您在
.validate()
之后所说:
$('select.id_material').rules('add',{required:true,})但仍然只有一个
select
正在验证。
$('#myform').validate({ ... });
<select class="escolhaVidro id_material required" name="id_material[]" id="id_material">
// must be called after validate()
$('select.id_material').each(function () {
    $(this).rules('add', {
        required: true
    });
});
$('select.id_material').rules('add', {
    required: true
});
$('#formOrcamento').live('submit', function() {
    $(this).validate({ ... });
});
$(document).ready(function () {

    $('#myform').validate({
        ignore: [], // to allow validation of hidden elements
        // other options,
    });

});
$(this).validate({
    rules: {
        "id_material[]" : {
            required : true
        }
    }
});