在运行剩余的javascript之前检查有效的电子邮件

我有一个文本框,用户需要插入有效的电子邮件地址。

当用户提交有效的电子邮件地址时,会在回发数据时显示加载图形。

下面的代码适用于显示加载图形,但它不会检查电子邮件地址是否有效。 任何人都可以帮忙吗?

$('#btnEmail1Submit').live ("click", function() { $('
').appendTo(".emailEditContainer"); $('
').appendTo(".emailEditContainer"); });

我想我需要在点击运行的函数周围放置一个if语句 – 所以类似于:

 $('#btnEmail1Submit').live ("click", function() { if(emailvalid == true) { $('
').appendTo(".emailEditContainer"); $('
').appendTo(".emailEditContainer"); } });

我正在使用asp.net电子邮件validation – 它看起来像这样:

  

您应该使用正则表达式检查电子邮件的有效性

 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; } $('
').appendTo(".emailEditContainer"); $('
').appendTo(".emailEditContainer"); });

regexp来自JavaScript中的Validate电子邮件地址?

您需要使用正则表达式来测试电子邮件地址的有效性:

 function isValidEmailAddress(emailAddress) { var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([az]{2,6}(?:\.[az]{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); }; 

这来自这个问题 ,所以请查看该主题以获取更多信息。

您需要使用用户提供的电子邮件地址调用该函数,因此我假设:

 var email = $("#emailInput").val(); if(isValidEmailAddress(email)) { //Do stuff } 

电子邮件validation已在SO和其他地方 多次讨论过。 简而言之,很难(不可能)做到完美,并且在最大化有效格式的覆盖范围和最小化误报之间进行权衡。 事实上,我所做的只是validation电子邮件地址是一项基本的健全性检查。 在伪代码中:

 if (address.contains("@")) { .. // then ok } 

其他任何事情都是徒劳的。 即使你花了很多年的时间构建一些非常复杂的正则表达式来遵守RFC822以获得有效的地址(有真正的地址不符合RFC) – 你怎么知道这个收件箱实际存在?

你可以检查一下

 function myClick() { Page_ClientValidate(); if (Page_IsValid) { return true; } else { return false; } } 

如果你正在使用regularexpressionvalidation器,那么这可以使用….

如果您需要执行apsvalidation器来validation电子邮件地址,这似乎与您的问题相关,那么您需要在拨打电话之前调用生成的javascript来执行此操作 – 所以请致电:

如果(Page_ClientValidate)

做你的其他事情

但是,这将运行所有页面validation,而不仅仅是电子邮件。

如果您只需要为此运行一个validation调用,您可以查看页面上生成的javascript,并找到它为您的电子邮件validation调用的位置,然后调用它。 但是,我不建议这样做,因为它可能会在页面重新生成时发生变化。

请参阅CodeProject