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类
$(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
}
}
});