请帮忙。我不是要你创建这个程序,请告诉我我缺少的东西。这是为了自学。我正在尝试制作一个可以执行此操作的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>
答案 0 :(得分:0)
要检查字段是否为空,您只需使用:
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);
}
答案 1 :(得分:0)
不要提出自己的电子邮件规则,而是考虑所有电子邮件都遵循常规格式,使其成为正则表达式的理想选择。
这是我在谷歌发现的第一个正则表达式(意味着可能会有更好的)。
var email_rx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
这极大地简化了您的代码。不再需要点和点&符号,只需检查电子邮件是否与提供的正则表达式匹配:
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;
}
}
答案 2 :(得分:0)
在你的其他条件中,它应该是dotpos + 2 >= y.length
而不是dotpos + 2 >=x.length
答案 3 :(得分:0)
在您的代码中:
> function validateForm1() > { > var y=document.forms["myForm"]["email"].value;
您应该注意长属性访问链,如果缺少某个部分,您只会收到错误并且脚本将停止运行。此外,为变量使用合理的名称,它使生活更容易。考虑类似的事情:
var form = document.forms['myForm'];
var emailInput = form && form.elements['email'];
var email = emailInput && emailInput.value;
现在,如果由于某种原因导致表单或电子邮件输入丢失,您可以更好地处理错误,而不仅仅是崩溃脚本。
> var atpos=y.indexOf("@"); > var dotpos=y.lastIndexOf(".");
您对电子邮件地址的要求(非常小,可能没什么用,但这是您的选择)可以通过正则表达式来满足:
var emailRe = /.+@.*\...+$/;
> var x=document.forms["myForm"]["fname"].value;
> if (x==null || x=="" || y=="")
如果您初始化 x (我称之为名称),与 y (我重命名为电子邮件),然后 x 将是未定义的或字符串。据推测,您希望名称不为空,而不是只有空格,所以:
var nameRe = /^\s*$/; // match string of just zero or more whitespace characters
if (name && nameRe.test) {
> {
> alert("First name and Email must be filled out");
> return false;
> }
> else if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
那可以是:
else if (!emailRe.test(email)) {
> {
> alert("Not a valid e-mail address");
> return false;
> }
> }