我正在使用 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;
});
});
我不会仅仅检查它是否有电子邮件地址来做到这一点。我会使用官方正则表达式来匹配电子邮件。但是,如果您不能使用正则表达式,请使用这个
var str="[email protected]";
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-]+)*$/
验证电子邮件的最佳选择是正则表达式。确实没有一个伟大的“一刀切”正则表达式可以捕获所有有效类型的电子邮件,因为实际规范允许存在相当多有趣的地址,即使它们不是很受欢迎且广泛使用。 你可以看看这个匹配电子邮件的正则表达式指南
在你的
isValid
中你可以添加这样的东西
if ('fldId' === 'email') {
return /.+@.+\..+/.test(val);
}
正则表达式
/.+@.+\..+/
只是检查任何包含一些字符和@、更多字符、点以及之后更多字符的内容。这基本上是对电子邮件地址最简单的检查。您可以从链接中将其更改为一些更好的。
此外,您还可以研究一些 html5 的优点。带有
input
的 type=email
字段将在某种程度上被现代网络浏览器自动验证,并且它们很有可能比网络上悬而未决的验证效果更好。