【发布时间】:2016-06-04 09:46:51
【问题描述】:
我正在为版主创建一个表单以添加新用户。表格最多可以展开为六行。我设置了js邮箱验证,但是它只检查第一行,所以如果版主添加了多行,我需要添加一个循环来检查另一行的电子邮件字段。
HTML 代码是:
<td><input class="eml" name="email"></td>
如果添加更多行,字段名称将是:
<td><input class="eml" name="email"></td>
<td><input class="eml" name="email2"></td>
<td><input class="eml" name="email3"></td>
<td><input class="eml" name="email4"></td>
<td><input class="eml" name="email5"></td>
我使用的js函数是:
function ValidateEmail()
{
var regexEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var email = document.getElementById("pls").elements.namedItem("email").value;
if (!(regexEmail.test(email))) {
document.pls.email1.focus() ;
//email.focus();
alert("Please enter a valid email address");
return false;
}
else {
return true;
}
}
我知道一种添加循环的方法,但问题是我无法用变量替换 elements.namedItem("email") 中的“电子邮件”名称
我的问题是:
- 我怎么会有这样的东西:
var email = document.getElementById("pls").elements.namedItem("email[i]").value;
所以我可以在循环中重复它以获取下一个电子邮件字段。
- 如果您有任何替代方法,将不胜感激:)
【问题讨论】:
-
一种简单但可能无法使用的方法是使用 jquery,使用以选择器开头的属性,您可以选择所有以 [name^='email'] 开头的元素并循环用正则表达式遍历每个元素
-
感谢您的建议,但没有 jquery。我只想在我的代码中添加一个循环。
-
为什么要限制可以添加的用户数量?使它们不受限制,并使用数组样式名称
name=email[]。大多数服务器库会自动从中创建一个参数数组。 -
那个正则表达式不允许很多generic top-level domains。它也不允许像
firstname+lastname@example.com这样的有效地址。 -
@robertklep 那么你建议我用什么?
标签: javascript loops email-validation