首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表单验证自学

表单验证自学
EN

Stack Overflow用户
提问于 2011-10-06 10:16:44
回答 4查看 5.5K关注 0票数 0

请帮帮忙。我不是要求你创建这个程序,只是请告诉我我错过了什么。这是自学用的。我正在尝试做一个javascript程序,它将做到这一点: 1。警告用户,如果没有名字或电子邮件2。电子邮件数据必须包含一个@符号和至少一个点(.)。此外,@不能是电子邮件地址的第一个字符,最后一个点必须在@符号之后,并且在结尾之前至少有2个字符。我的代码:

代码语言:javascript
运行
复制
 <html>
 <head>
 <script type="text/javascript">

 function validateForm1()
 {
 var y=document.forms["myForm"]["email"].value;
 var atpos=y.indexOf("@");
 var dotpos=y.lastIndexOf(".");
 var x=document.forms["myForm"]["fname"].value;
 if (x==null || x=="" ||  y=="")
 {
 alert("First name and Email must be filled out");
 return false;
 }
 else if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)

 {
 alert("Not a valid e-mail address");
 return false;
}
}

 </script>
 </head>

 <body>

<form name="myForm" action=# onsubmit="return validateForm1()" method="post">
 First name: <input type="text" name="fname"><br/>
Email: <input type="text" name="email"><br/>
<input type="submit" value="Submit">
</form>



</body>

</html>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-06 10:28:16

在else if条件中,它应该是dotpos + 2 >= y.length而不是dotpos + 2 >=x.length

票数 0
EN

Stack Overflow用户

发布于 2011-10-06 10:23:22

要检查字段是否为空,您可以简单地使用以下命令:

代码语言:javascript
运行
复制
if (strValue) {
    // string not empty
} else {
    // string empty
}

如果您需要专门检查null上的空字符串,我认为使用===运算符检查""是最好的选择(这样您就知道它实际上是您正在比较的字符串)。

为了验证电子邮件地址,我建议使用正则表达式。

下面是一个示例:

代码语言:javascript
运行
复制
function validateEmail(elementValue){
   var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
   return emailPattern.test(elementValue);
}
票数 0
EN

Stack Overflow用户

发布于 2011-10-06 10:27:27

与其为电子邮件制定自己的规则,不如考虑到电子邮件都遵循正则格式,这使它们成为正则表达式的一个很好的候选者。

这是我在谷歌找到的第一封电子邮件正则表达式(这意味着很可能有更好的邮件)。

代码语言:javascript
运行
复制
var email_rx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

这大大简化了您的代码。不再寻找点和和符号,您只需检查电子邮件是否与提供的regex模式匹配:

代码语言:javascript
运行
复制
function validateForm1() {
  var email = document.forms["myForm"]["email"].value;
  var fname = document.forms["myForm"]["fname"].value;

  // also note that in javascript, empty strings and nulls are both "falsey",
  // so this conditional works.
  if (!fname || !email) {
    alert("First name and Email must be filled out");
    return false;

  // if they both exist, test your email versus the regex.
  } else if (!email_rx.test(email)) {
    alert("Not a valid e-mail address");
    return false;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7669720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档