检查字段是否包含@

时间:2014-01-14 12:52:15

标签: javascript forms validation

我正在使用javascript检查表单中的字段是否为空。 一切都很好,它还会检查字段中的一定数量的字符。

但是现在我想要检查电子邮件字段是否包含“@”和至少一个“。”否则它应该给出(相同的)错误信息。

我希望有人可以帮助我!

小提琴:
http://jsfiddle.net/43vLT/1/

function isValid(fldId,len) {
var fld = $("#"+fldId);
var val = fld.val();
window.console && console.log(fld,fldId)
if (val == "" || (len && val.length<len)) {
  fld.css("borderColor","red");
  return false;
}      
fld.css("borderColor","black");
return true;
}

$(function() {
$("form").on("submit",function() {
var errormessage = [];

if (!isValid('naam', 10)) {
  errormessage.push("You forgot to fill in your name ");
}
if (!isValid('email')) {
  errormessage.push("You forgot to fill in your email ");
}

if (errormessage.length>0) {
  window.console && console.log("error present");
  $(".error-messages").html(errormessage.join('<br/>')).fadeIn();
  return false;
}
window.console && console.log("success");
return true;
});
});

2 个答案:

答案 0 :(得分:1)

我不会这样做只是检查它是否有电子邮件地址。我会使用官方正则表达式来匹配电子邮件。但是,如果您不能使用正则表达式,请使用此

var str="name@example.com";
if(str.indexOf("@")===-1 ||str.indexOf(".")===-1){
    alert("Your email address must include one @ sign and one period");
}

W3C将此正则表达式用于其<input type="email"/>

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

答案 1 :(得分:1)

验证电子邮件的最佳选择是正则表达式。实际的规范允许存在相当一些有趣的地址,即使它们不是很受欢迎并且被广泛使用,但实际上并没有能够捕获所有有效类型的电子邮件的“一刀切”的正则表达式。 。 你可以看看this guide to regular expressions for matching emails

在您的isValid中,您可以添加类似

的内容
if ('fldId' === 'email') {
    return /.+@.+\..+/.test(val);
}

正则表达式/.+@.+\..+/只检查具有某些字符的任何内容,@,更多字符是一个点,还有更多字符。它基本上是最天真的电子邮件地址检查。您可以从链接中为一些更好的更改它。

此外,你可以看看一些html5善良。带有input的{​​{1}}字段会在某种程度上被现代网络浏览器自动验证,并且很有可能他们会在网络上找到更好的验证效果。