使Jquery验证插件在没有name属性的输入上工作

时间:2013-05-29 12:49:27

标签: jquery jquery-validate name-attribute

我花了很长时间才发现JQuery表单验证插件仅适用于具有“name”属性的字段。

无论如何,我用它来制作所需的所有字段。

我的问题是,在某些时候,我有一个文字输入

<div id='choices'>
  <input type='text' />
</div>
<a href='#' id='add-choice' >Add input </a>

用户可以根据需要添加任意数量的文本输入:

$("#add-choice").live("click",function(){
                    $("#choices").append("<input type='text' /><br>");
});

我希望这些新字段也是必需的。即使我给第一个输入命名。我应该如何动态添加新输入?

有没有办法在不使用名称attr的情况下使用插件,还是有其他解决方案?

3 个答案:

答案 0 :(得分:2)

是的,你可以做到,但有局限性

限制:在使用不同规则时,您无法灵活地更改消息。

<form ="validationForm">
<input type="text" class="required" title="required message" />
</form>

jQuery("#validationForm").validate();

答案 1 :(得分:1)

引用OP:

  

“有没有办法使用插件而不使用名称attr”

不,如果您的所有字段都没有name属性,则无法使用jQuery Validate插件。

As per documentation:

  

标记建议

     

对于输入元素,name属性是'''''''   如果没有它,验证插件就无法运行。

“解决方法”是让jQuery在创建新输入时创建唯一名称。

答案 2 :(得分:1)

我应该为动态添加的新输入做些什么?

给他们一个名字,任何名字

有没有办法在不使用名称attr的情况下使用该插件?

没有

还有其他解决方案吗?

这取决于你对这些字段做了什么 - 显然你不需要为了使jquery验证工作的任何其他原因而在它们上面有一个名字,所以为什么你不只是编造一个名字并将它们全部调用是什么?

更正 - 需要唯一名称才能看到评论

var i = 0;
$("#add-choice").live("click",function(){
 $("#choices").append("<input type='text' name='bob" + i + "' class='required'/><br>");
 i = i + 1;
});