На моей странице 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, происходит обратная передача.
Почему это происходит?Есть идеи?Как я могу подавить событие изменения на стороне сервера, если адрес электронной почты недействителен?
Функция проверки:
функция 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;
}function 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";
} if (EmailError! = "") {valid = false;$ ( "# EmailErrorSpan") HTML (EmailError).$ ( "# EmailErrorSpan") шоу ().} else $ ("# EmailErrorSpan"). hide ();возврат действителен;
}