jQuery验证动态输入[重复]

Posted

技术标签:

【中文标题】jQuery验证动态输入[重复]【英文标题】:jQuery validate dynamic inputs [duplicate] 【发布时间】:2016-02-29 19:15:56 【问题描述】:

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

我用的是 laravel 4.2 刀片

<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 输入,而新添加的输入未验证

使用相同名称“items[]”创建的所有生成的输入

如果我忘记将任何项目值放入表单中,我会在服务器端获得项目数组,其中包含空值

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

【问题讨论】:

刷新 $('.val-form').validate();添加输入后 我已经尝试刷新 $('.val-form').validate();添加输入后但没有解决问题 你在使用一些验证插件吗?请使用生成的 html 和使用的 JS 创建fiddle。 我用这个插件github.com/jzaefferer/jquery-validation 【参考方案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 上找到了这个解决方案

【讨论】:

以上是关于jQuery验证动态输入[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery 验证动态输入字段

使用验证器插件 Jquery 验证动态输入表单元素

jquery验证输入数组并传递动态值

jquery验证动态表单输入的插件不起作用

如何使用javascript验证动态生成的输入框值

动态生成表中的另一行后,JQuery函数不起作用[重复]