Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“不相等”;Javascript表单验证中未识别签名_Javascript_Html_Forms_Validation - Fatal编程技术网

&引用;“不相等”;Javascript表单验证中未识别签名

&引用;“不相等”;Javascript表单验证中未识别签名,javascript,html,forms,validation,Javascript,Html,Forms,Validation,有人能告诉我如何改进这段代码吗?最重要的是,在Z不等于零或字符串“Email”的所有情况下,对我的电子邮件验证进行排序 所有字段都以已输入的适当措辞开头,作为客户的示例 提前致以亲切的问候 function validateForm() { //Uses HTML field IDs var x=document.forms["myForm"]["name"].value; var y=document.forms["myForm"]["phone"].value; var z=document

有人能告诉我如何改进这段代码吗?最重要的是,在Z不等于零或字符串“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;
        }
    }
}
函数validateForm()
{
//使用HTML字段ID
var x=document.forms[“myForm”][“name”].value;
var y=document.forms[“myForm”][“phone”].value;
var z=document.forms[“myForm”][“email”].value;
//名称定位器
如果(x==null | | x==“”| | x==“名称”)
{
警告(“请输入您的姓名。”);
返回false;
}
//接触法定位器
如果((y==null | | y==“”| | y==“电话号码”)&&(z==null | | z==“”| | z==“电子邮件”))
{
警报(“请输入联系方式”);
返回false;
}
//电话数字验证,如果未编辑电子邮件字段,则运行此验证
如果(z==null | | z==“电子邮件”)
{
if(isNaN(y)| | x.indexOf(“”)=-1)
{
警报(“电话必须是数字值”);
返回false;
}
}
//电话长度验证,如果未编辑电子邮件字段,则运行此验证
如果(z==null | | z==“电子邮件”)
{
如果(y.长度>14)
{
警报(“电话必须有效。”);
返回false;
}
}
//电子邮件验证不起作用,应仅在字段中输入内容时运行
如果(z!=null | | z!=“电子邮件”)
{
var atpos=z.indexOf(“@”);
var dotpos=z.lastIndexOf(“.”);

如果(atpos你可以做一些事情

z==null | | z==”
可以替换为
!Boolean(z)
!z

z!=null | | z!=”
可以替换为
Boolean(z)
!!z

您还应该尝试始终使用===而不是==除非您希望使用类型强制

因此,您对
z==“Email”
的检查可能会更改为类似于
z.toLowerCase()==“Email”

您似乎也在重复代码-->
z==null | | z==“”| | z==“Email”
(x2)。您可以将电话数字验证和电话长度验证结合起来。

看看哪个是jQuery和Javascript的组合。它将为您提供一些优秀的见解,帮助您了解应该查找什么以及如何处理典型表单的特定元素(包括电子邮件地址的GREAT RegEx示例:

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value)
更改:

if (z!=null || z!="" || z!="Email")
为此:

if (z!=null && z!="" && z!="Email")

您的验证都应该是ANDs vs ORs,因为您希望在提交之前所有这些都是真实的。

您是否考虑过使用类似的方法而不是手动编写表单验证

示例代码:

var validator = new FormValidator('example_form', [{
    name: 'req',
    display: 'required',    
    rules: 'required'
}, {
    name: 'alphanumeric',
    rules: 'alpha_numeric'
}, {
    name: 'password',
    rules: 'required'
}, {
    name: 'password_confirm',
    display: 'password confirmation',
    rules: 'required|matches[password]'
}, {
    name: 'email',
    rules: 'valid_email'
}, {
    name: 'minlength',
    display: 'min length',
    rules: 'min_length[8]'
}], function(errors, event) {
    if (errors.length > 0) {
        // Show the errors
    }
});

您是否尝试过在验证之前发出警告(z)
,查看它的值是什么?一些提示:a)如果变量不代表矢量数据或类似数据,则永远不要命名变量
x、y、z
。b)更正缩进。c)保持代码干燥:创建一个检查
null
或给定值(例如“name”的函数,“Email”,“Phone Number”)。当z为null或z为空字符串或z等于“Email”时,您的条件将为真。这对您来说不起作用吗?到底是什么问题?现在,如果您想获得改进建议,请使用占位符属性,那么您就不必检查“Email”:为回复干杯,警报(z)返回,“Email”,默认值。不管如何,它都会运行该方法。只有当z不等于null、空字符串或“Email”时,我才需要条件为true。它不应该是&&而不是||