【发布时间】:2011-08-13 05:52:06
【问题描述】:
在我的 asp.net 页面中,我有以下文本框(用于电子邮件地址):
<asp:TextBox ID="EmailTextBox" runat="server" AutoPostBack="true"
OnTextChanged="EmailTextBox_TextChanged"/>
我想在 OnTextChanged 回发之前验证客户端的电子邮件地址,我用 jquery 做了以下操作:
$("#EmailTextBox").live("change", function(event) {
var ValidEmail = ValidateEmail();
if (ValidEmail == false)
event.preventDefault();
});
但是,即使 ValidEmail 返回 false,也会发生回发。
为什么会这样?有任何想法吗?如果电子邮件地址无效,如何抑制服务器端更改事件?
验证函数:
function CheckExist(Email) {
var IsAvailable = false;
var parameters = JSON.stringify({ 'Email': Email });
//$("#CheckEmailDiv").show().delay(300);
$.ajax({
async: false,
type: "POST",
url: "MyWebService.asmx/CheckAvailable",
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
IsAvailable = response.d;
// $("#CheckEmailDiv").hide();
}
});
return IsAvailable;
} 函数 ValidateEmail() {
var valid = true;
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);
var Email = $("#EmailTextBox").val();
var EmailError = "";
if (!pattern.test(Email)) {
EmailError = "**Email empty or invalid";
}
else {
var IsAvailable = CheckAvailable(Email);
if (IsAvailable == true)
EmailError = "**The email you typed doesnt exist";
} 如果(电子邮件错误!=“”){ 有效=假; $("#EmailErrorSpan").html(EmailError); $("#EmailErrorSpan").show(); } 别的 $("#EmailErrorSpan").hide(); 返回有效;
}
【问题讨论】:
标签: jquery asp.net html validation