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验证动态输入[重复]的主要内容,如果未能解决你的问题,请参考以下文章