我正在使用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;
});
});
答案 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}}字段会在某种程度上被现代网络浏览器自动验证,并且很有可能他们会在网络上找到更好的验证效果。