【发布时间】:2013-08-22 14:28:27
【问题描述】:
谁能告诉我如何改进此代码,最重要的是对我的电子邮件验证进行排序,以便在 Z 不等于任何内容或字符串“电子邮件”的所有情况下都能正常工作
所有字段都以已输入的适当措辞开头,作为客户示例。
提前致以诚挚的问候。
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;
}
}
}
【问题讨论】:
-
你有没有试过
alert(z)在验证前看看它的值是多少? -
一些提示:a) 永远不要将变量命名为
x, y, z,如果它们不代表矢量数据等。 b) 更正你的缩进。 c) 保持代码干燥:创建一个函数来检查null、""或给定值(例如“姓名”、“电子邮件”、“电话号码”)。 -
当 z 为 null 或 z 为空字符串或 z 等于“电子邮件”时,您的条件将为真。它不适合你吗?究竟是什么问题?现在,如果您需要改进建议,请使用占位符属性,那么您就不必检查“电子邮件”:w3schools.com/tags/att_input_placeholder.asp
-
为回复干杯,alert(z) 返回,“Email”,默认值。无论如何,它都会运行该方法。只有当 z 不等于 null、空字符串或“电子邮件”时,我才需要条件为真。
-
不应该是&&而不是||
标签: javascript html forms validation