检查字段是否包含@

问题描述 投票:0回答:2

我正在使用 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;
});
});
javascript forms validation
2个回答
1
投票

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

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-]+)*$/

1
投票

验证电子邮件的最佳选择是正则表达式。确实没有一个伟大的“一刀切”正则表达式可以捕获所有有效类型的电子邮件,因为实际规范允许存在相当多有趣的地址,即使它们不是很受欢迎且广泛使用。 你可以看看这个匹配电子邮件的正则表达式指南

在你的

isValid
中你可以添加这样的东西

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

正则表达式

/.+@.+\..+/
只是检查任何包含一些字符和@、更多字符、点以及之后更多字符的内容。这基本上是对电子邮件地址最简单的检查。您可以从链接中将其更改为一些更好的。

此外,您还可以研究一些 html5 的优点。带有

input
type=email
字段将在某种程度上被现代网络浏览器自动验证,并且它们很有可能比网络上悬而未决的验证效果更好。

© www.soinside.com 2019 - 2024. All rights reserved.