我有一个表格可以做两件事:
- 将名字和电子邮件地址传递给 PHP。
- 如果用户想要提交多于一组或两组数据,则单击即可动态添加一组新的姓名/电子邮件字段。
由于我不确切知道每个用户可能选择提交多少组,因此我将数据以数组形式传递给 PHP(使用名称后跟 []),因此我可以使用 foreach 循环并始终获取每个数据组。下面是一些代码以便更好地理解:
<form method="post" action="submit.php" id="formID">
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="contacts">
<tr>
<td><label class="namelabel"><span>Friend's First Name:</span><input type="text" name="friendName[]" class="friendName" id="name1" /></label></td>
<td><label class="emaillabel"><span>Friend's Email:</span><input type="text" name="friendEmail[]" class="friendEmail" id="email1" /></label></td>
</tr>
</table>
<p class="addmore"><a href="#" id="addclick">Click Here To Send This To More Friends</a></p>
<input type="submit" value="Spread The News!" name="submit" />
</form>
<script language="javascript" type="text/javascript" src="include/jquery-1.3.2.min.js"></script>
<script language="javascript" type="text/javascript" src="include/jquery.validate.pack.js"></script>
<script type="text/javascript">
$(document).ready(function() {
fieldCount = 1;
$("#addclick").click(function(e){
e.preventDefault();
fieldCount+=1;
$('#contacts tr:last').after('<tr><td><label class="namelabel"><span>Friend\'s First Name:</span><input type="text" name="friendName[]" class="friendName" id="name' + fieldCount + '" /></label></td><td><label class="emaillabel"><span>Friend\'s Email:</span><input type="text" name="friendEmail[]" class="friendEmail" id="email' + fieldCount + '" /></label></td></tr>');
});
$("#formID").validate({
rules: {
"friendName[]": "required",
"friendEmail[]": "required email",
}
});
});
</script>
然而,问题是,只有第一个friendName[]和friendEmail[]在提交时得到验证。您必须单击具有相同名称的任何其他字段才能使验证工作(就像延迟验证仅在焦点后启动)
如何对表单字段使用相同的名称,并同时验证所有字段?
请按照以下步骤操作。
1)打开jquery.validate.js文件
2) 找到 checkForm: function() {
3)将此函数替换为以下代码。
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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)