我有一个包含4个字段的表单 名字(必填) 姓氏(必填) 电子邮件(必填) 电话(可选)(如果用户输入任何它应该验证的号码)下面是我有的表格
<form name="myForm" method="post" onsubmit="return validate();">
First Name : <input type="text" name="fname" id="id_fname"> <br>
Last Name : <input type="text" name="lname" id="id_lname"> <br>
Email : <input type="text" name="email" id="id_email"> <br>
Phone : <input type="text" name="phone" id="id_phone"> <br>
<input type="submit" value="send">
</form>
以下是javascript代码
<script type="text/javascript">
function validate()
{
if (document.myForm.id_fname.value == '') {
alert("Enter First Name");
return false;}
else if(document.myForm.id_lname.value == '') {
alert("Enter Last Name");
return false; }
//现在这里的电子邮件验证无效
else if(document.myForm.id_email.value == '' || document.myForm.id_email.value != ''){
var x = document.myForm.id_email.value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
alert("Not a valid e-mail address");
return false;
else
return true;
}
//这是电话号码,如果此字段为空则无验证,如果此字段不为空,则应验证仅包含数字
else if(document.myForm.id_phone != '') {
var ValidChars = "0123456789";
var IsNumber=true;
var Char;
sText = document.form1.testfield2_phone.value ;
for (i = 0; i < sText.length && IsNumber == true; i++)
{
Char = sText.charAt(i);
if (ValidChars.indexOf(Char) == -1)
{
IsNumber = false;
}
}
if(IsNumber == false)
alert("Enter valid Number");
return false;
else
return true;
}
else
return true;
document.myForm.submit();
}
</script>
当我对这些电子邮件和手机发表评论时,电子邮件验证和手机验证无法正常运行我的名字和姓氏验证正确...代码验证是否有任何错误。
当提交表单时,当我们刷新时,再次重新提交详细信息,如何避免这种情况。
答案 0 :(得分:2)
你为什么这么复杂?
if (document.myForm.id_fname.value.length < 3) {
alert("Enter First Name");
return false;
} else if (document.myForm.id_lname.value.length < 3) {
alert("Enter Last Name");
return false;
} else if (!/^\S+@\S+\.\w+$/.test(document.myForm.id_email.value)) {
alert("Not a valid e-mail address");
return false;
} else if (!/^\d+$/.test(document.myForm.id_phone.value)) {
alert("Enter valid Number");
return false;
}
return true;
答案 1 :(得分:1)
有多种语法错误,主要与else if
对于重新提交,Post - Redirect - Get(PRG)是一种常见的设计模式,供Web开发人员帮助避免某些重复的表单提交,并允许用户代理使用书签和刷新按钮更直观地表现。