【问题标题】:email validation javascript behaving differently电子邮件验证 javascript 行为不同
【发布时间】:2013-08-06 05:24:20
【问题描述】:

我正在尝试使用 javascript 验证电子邮件 ID。

代码如下:

 if (!email) {
        alert('empty value');
} else if (!ValidateEmail(email)) {
        alert('invalid email');
}

我的jsFiddle

它工作得很好,所以我想为什么不把两个条件都变成一个条件

    if ((!email) && (!ValidateEmail(email))) {
        alert('Invalid value');
}

但这一次上面的脚本不起作用。 jsFiddle

谁能解释它为什么会这样?

【问题讨论】:

    标签: javascript jquery validation email


    【解决方案1】:
    if ((email) && (!ValidateEmail(email)))
    

    这应该是条件!!验证空电子邮件是没有意义的,对吧!因此这个条件(说当有一些电子邮件(非空)值但它不是有效值时)除了&&,如果任何一个条件是false,最终答案是false

    要检查空电子邮件并为此提醒适当的消息,您必须保留第一个条件!

    【讨论】:

      【解决方案2】:

      这两个条件是不同的。脚本不再起作用的原因是因为并不总是满足这两个条件!一个可以,但不能同时另一个!在您的第一个代码示例中,只有在电子邮件变量为 false 或未设置时才进行验证。换句话说,保持原样!

      【讨论】:

        【解决方案3】:

        .val()(以及node.value)返回字符串,因此如果您的输入为空,它将返回一个空字符串

        空字符串在 JavaScript 中被评估为真。

        从你的小提琴中你可以简单地摆脱(!email),因为空字符串无论如何都不会匹配你的验证。

        【讨论】:

          【解决方案4】:

          这真的很容易,如果你在这里使用 Jquery 一个例子:-

          var emailpattern = /^[a-zA-Z]([a-zA-Z0-9_\-])+([\.][a-zA-Z0-9_]+)*\@((([a-zA-Z0-9\-])+\.){1,2})([a-zA-Z0-9]{2,40})$/;
          
          if(!emailpattern.test($('#email').val())){
             return false;
             } else {
               return true;
            }
          

          【讨论】:

            猜你喜欢
            • 2023-04-06
            • 2011-10-20
            • 2011-02-16
            • 1970-01-01
            • 2022-01-24
            • 2012-09-15
            • 2017-05-10
            • 2013-11-07
            • 2012-08-19
            相关资源
            最近更新 更多