请帮帮忙。我不是要求你创建这个程序,只是请告诉我我错过了什么。这是自学用的。我正在尝试做一个javascript程序,它将做到这一点: 1。警告用户,如果没有名字或电子邮件2。电子邮件数据必须包含一个@符号和至少一个点(.)。此外,@不能是电子邮件地址的第一个字符,最后一个点必须在@符号之后,并且在结尾之前至少有2个字符。我的代码:
<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>
发布于 2011-10-06 10:28:16
在else if条件中,它应该是dotpos + 2 >= y.length
而不是dotpos + 2 >=x.length
发布于 2011-10-06 10:23:22
要检查字段是否为空,您可以简单地使用以下命令:
if (strValue) {
// string not empty
} else {
// string empty
}
如果您需要专门检查null上的空字符串,我认为使用===
运算符检查""
是最好的选择(这样您就知道它实际上是您正在比较的字符串)。
为了验证电子邮件地址,我建议使用正则表达式。
下面是一个示例:
function validateEmail(elementValue){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
return emailPattern.test(elementValue);
}
发布于 2011-10-06 10:27:27
与其为电子邮件制定自己的规则,不如考虑到电子邮件都遵循正则格式,这使它们成为正则表达式的一个很好的候选者。
这是我在谷歌找到的第一封电子邮件正则表达式(这意味着很可能有更好的邮件)。
var email_rx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
这大大简化了您的代码。不再寻找点和和符号,您只需检查电子邮件是否与提供的regex模式匹配:
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;
}
}
https://stackoverflow.com/questions/7669720
复制相似问题