Javascripts函数中的字符返回false,即使字符不满足条件

时间:2012-07-01 01:28:21

标签: javascript function dom

我正在尝试学习JavaScript ...我的功能就像,我采用格式用户ID字段...这是一个电子邮件地址,并尝试检查它是否符合以下条件。然而,即使我认为我给用户名> 3和域名为gmail.com,我仍然得到错误的回复...有人请检查并让我知道为什么它进入if循环,我是否必须修剪文本什么的。

另外,如果你能告诉我如何使用jQuery有效地写这个,这将有助于我学习。但如果你认为我在这里混合两件事......我的首要任务是上面的第一个问题。

function isValidate(eltt) {

    var flag      = true;
    var upos      = eltt.indexOf("@");
    var uendpos   = eltt.indexOf(".com");
    var totlength = eltt.length;
    var domain    = eltt.slice(upos,totlength);


    if ( upos < 3 | domain!="gmail.com" | uendpos=== -1) {
        flag=false;
    }

    return flag;
}

1 个答案:

答案 0 :(得分:1)

首先,问题是你使用的是|而不是||。 (|是按位的,或者在这种情况下通过组合条件的二进制表示的位来产生基本随机的结果。有可能,你永远不需要|;所以使用||并忘记|甚至自己做任何事情。)

其次,使用正则表达式可以更轻松地进行验证:

if (!eltt.match(/^.{3,}@gmail\.com$/)) {
  return false;
}

也就是说,它必须以(^)至少三个字符.{3,}开头,然后是文字@gmail.com,后面没有任何内容($)。