jQuery验证动态输入

时间:2015-11-26 16:09:16

标签: jquery forms laravel input jquery-validate

如果这是一个动态数组,如何验证所有选择输入?像这样:

我使用了laravel 4.2 blade

<tr><td> {{ Form::select('items[]', $items,  null, array('class'=>'form-control items', 'required')) }} </td></tr>

这是表单验证码

if ($('.val-form').length > 0) {
    $('.val-form').validate();
}

然后我创建一个按钮来生成新的选择输入

$(document).on('click', '.add-item', function (e) {
        var row = $(this).closest('tr').prev('tr').clone();
        row.find('input').val('');
        $(this).closest('tr').before(row);
        e.preventDefault();
    });
单击“添加”按钮后,表单仅验证dom输入和未验证的新添加输入

enter image description here

使用相同名称创建的所有生成输入&#34;项目[]&#34;

如果我忘记在表单中放置任何项值,我在服务器端使用空值

'items' => 
array (size=2)
  0 => string '42' (length=2)
  1 => string '' (length=0) // this empty value cause i forget to fill all inputs

1 个答案:

答案 0 :(得分:-1)

在jquery.validate.js中,我们可以找到一个名为checkForm的函数,我们必须修改它,如下所示进行修复。

checkForm: function() {
this.prepareForm();
for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
if (this.findByName( elements[i].name ).length != undefined && this.findByName( elements[i].name ).length > 1) {
for (var cnt = 0; cnt < this.findByName( elements[i].name ).length; cnt++) {
this.check( this.findByName( elements[i].name )[cnt] );
}
} else {
this.check( elements[i] );
}
}
return this.valid();
}

这将验证具有相同名称的数组输入字段,例如“items []” 我在link

上找到了这个解决方案