有没有人能告诉我如何改进这段代码,最重要的是对我的电子邮件验证进行排序,使其在Z不等于nothing或字符串“Email”的所有情况下都能工作。
所有字段都以已输入的适当措辞开头,作为客户的示例。
function validateForm()
{
//Uses HTML field IDs
var x=document.forms["myForm"]["name"].value;
var y=document.forms["myForm"]["phone"].value;
var z=document.forms["myForm"]["email"].value;
//Name locator
if (x==null || x=="" || x=="Name")
{
alert("Please enter the your name.");
return false;
}
//Contact method locator
if ((y==null || y=="" || y=="Phone Number")&&(z==null || z=="" || z=="Email"))
{
alert("Please enter a contact method.");
return false;
}
//Phone numeric validation, this runs if Email field is not edited
if (z==null || z=="" || z=="Email")
{
if (isNaN(y)||x.indexOf(" ")!=-1)
{
alert("Telephone must be a numeric value.");
return false;
}
}
//Phone length validation, this runs if Email field is not edited
if (z==null || z=="" || z=="Email")
{
if (y.length > 14)
{
alert("Telephone must be valid.");
return false;
}
}
//Email validation, does not work, this should run only when something is entered into the field
if (z!=null || z!="" || z!="Email")
{
var atpos=z.indexOf("@");
var dotpos=z.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=z.length)
{
alert("This is not a valid e-mail address");
return false;
}
}
}
字符串
4条答案
按热度按时间pn9klfpd1#
你可以做一些事情。
z==null || z==""
可以替换为!Boolean(z)
或!z
z!=null || z!=""
可以替换为Boolean(z)
或!!z
你也应该尝试总是使用=而不是==,除非你期望类型强制转换。
因此,您对
z == "Email"
的检查可能会更改为类似这样的z.toLowerCase() === "email"
看起来你也重复了代码-->
z==null || z=="" || z=="Email"
(x2)。你可以将合并电话数字验证和电话长度验证结合起来。e4yzc0pl2#
看看this validation code,它是jQuery和JavaScript的组合。它将为您提供一些关于应该寻找什么以及如何处理典型表单的特定元素的优秀见解(包括电子邮件地址的GREAT RegEx示例:
字符串
kpbwa7wx3#
变更:
字符串
为此:
型
您的验证应该都是AND与OR,因为您希望在提交之前所有这些都为真。
wztqucjr4#
除了手工编写表单验证,你有没有考虑过使用像validate.js这样的东西?
示例代码:
字符串