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

lad*_*_OC 7 jquery jquery-validate name-attribute

好吧,我花了很长时间才发现JQuery表单验证插件仅适用于具有"name"属性的字段.

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

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

<div id='choices'>
  <input type='text' />
</div>
<a href='#' id='add-choice' >Add input </a>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Dr *_*ard 2

对于动态添加的新输入我该怎么办?

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

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

还有其他解决方案吗?

这取决于你对这些字段做了什么——你显然不需要为它们起一个名字,除了让 jquery 验证工作之外的任何其他原因,那么你为什么不直接编一个名字并这样称呼它们呢?

更正 - 需要唯一的名称,请参阅评论

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

  • 回复:“那你为什么不编个名字然后这样称呼他们呢?” -- 有一个省略 name 属性的用例。当在提交之前加密 INPUT 值时(如 C/C 发布或 LastPass 式密码管理),您需要避免使用“name”属性 - 否则元素可能会以未加密的方式发布(如果未启用 javascript,例如)。如果不出意外,您将失去 PCI 认证(用于接受信用卡)。 (4认同)
  • 此外,如果您使用信用卡付款表单(例如:stripe),建议您省略名称属性。如果敏感的持卡人数据不会到达您的服务器,您的生活就会变得更加轻松。您不再需要担心编辑日志、加密持卡人详细信息或 PCI 合规性的其他负担。 (2认同)