我有一个文本框,要求用户插入有效的电子邮件地址。
当用户提交有效的电子邮件地址时,会在回发数据时显示加载图片。
以下代码适用于显示加载图形,但不会先检查电子邮件地址是否有效。任何人都可以帮忙吗?
$('#btnEmail1Submit').live ("click", function() {
$('<div class="submitBg"></div>').appendTo(".emailEditContainer");
$('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" /></div>').appendTo(".emailEditContainer");
});
我在想我需要在点击运行的函数周围放置一个if语句 - 如下所示:
$('#btnEmail1Submit').live ("click", function() {
if(emailvalid == true) {
$('<div class="submitBg"></div>').appendTo(".emailEditContainer");
$('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" /></div>').appendTo(".emailEditContainer");
}
});
我正在使用asp.net电子邮件验证 - 它看起来像这样:
<asp:RegularExpressionValidator Display="Dynamic" ValidationGroup="PrimarySubmit" ID="RegularExpressionValidator1" runat="server" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="tbEmail1" ErrorMessage="Invalid email address - " />
答案 0 :(得分:14)
您需要使用正则表达式来测试电子邮件地址的有效性:
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return pattern.test(emailAddress);
};
来自this question,所以请查看该帖子获取更多信息。
您需要使用用户提供的电子邮件地址调用该函数,因此我假设如下:
var email = $("#emailInput").val();
if(isValidEmailAddress(email)) {
//Do stuff
}
答案 1 :(得分:7)
您应该使用正则表达式检查电子邮件的有效性
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
$('#btnEmail1Submit').live ("click", function() {
if(!email.match(re)) {
alert('invalid email');
return false;
}
$('<div class="submitBg"></div>').appendTo(".emailEditContainer");
$('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" /> </div>').appendTo(".emailEditContainer");
});
答案 2 :(得分:3)
已在SO和many, many times上讨论了电子邮件验证elsewhere。简而言之,很难(不可能)做到完美,并且在最大化有效格式的覆盖范围和最小化误报之间进行权衡。事实上,我所做的只是验证电子邮件地址是一项基本的健全性检查。在伪代码中:
if (address.contains("@")) {
.. // then ok
}
其他任何事情都是徒劳的。即使你花了很多年的时间构建一些非常复杂的正则表达式来遵守RFC822来获取大多数有效地址(有些地址不符合RFC) - 你怎么知道这个收件箱真的存在吗?
答案 3 :(得分:0)
你可以查看这个
function myClick() {
Page_ClientValidate();
if (Page_IsValid) {
return true;
}
else {
return false;
}
}
如果您使用正则表达式验证器,则可以使用它....
答案 4 :(得分:0)
如果您需要执行aps验证器来验证电子邮件地址,这似乎与您的问题相关,那么您需要在拨打电话之前调用生成的javascript来执行此操作 - 请致电:
如果(Page_ClientValidate)
做你的其他事情
但是,这将运行所有页面验证,而不仅仅是电子邮件。
如果您只需要为此运行一次验证调用,您可以查看页面上生成的javascript,并找到它为您的电子邮件验证调用的位置,然后调用它。但是,我不建议这样做,因为它可能会在页面重新生成时发生变化。
请参阅CodeProject