2015-09-09 3 views
0

Здесь у меня есть жерех: TextBox, в RegularExpressionValidator и ValidatorCalloutExtender.RegularExpressionValidator не работает с событий JavaScript OnKeyUp

Моя проблема: без события OnKeyUp, он отлично работает, TextBox проверяется и становится красным, если он недействителен.
Но когда я добавляю событие, он перестает проверять, текстовое поле может иметь любой текст внутри, и он не станет красным.
Вот код:

ASP.NET:

<asp:TextBox 
    ID="txtTelefone" 
    runat="server" 
    OnKeyUp="maskField(this, event)" 
    Text="()-" 
    MaxLength="14"> 
</asp:TextBox> 
<asp:RegularExpressionValidator 
    ID="RegularExpressionValidator_Telefone" 
    runat="server" 
    ControlToValidate="txtTelefone" 
    ValidationExpression="(^\(\d{2}\)\d{4,5}-\d{4}$)|(^\(\)\-$)" 
    Display="None" 
    ErrorMessage="Invalid format!<br>Phone: (xx)xxxx-xxxx<br>Cel: (xx)xxxxx-xxxx"> 
</asp:RegularExpressionValidator> 
<ajaxToolkit:ValidatorCalloutExtender 
    ID="ValidatorCalloutExtender_Telefone" 
    runat="server" 
    TargetControlID="RegularExpressionValidator_Telefone" 
    HighlightCssClass="txt-TextBox-Error" 
    WarningIconImageUrl="~/Image/BackGroundAjax.png" 
    PopupPosition="left"> 
</ajaxToolkit:ValidatorCalloutExtender> 

JavaScript:

function maskField(textbox, event) { 
    //MASK TO PHONE NUMBERS -> FORMAT (99)99999-9999 OR (99)9999-9999 
    if (event.char.match(/[0-9()-]/) || event.which == 8 || event.which == 46) { 
     var next = textbox.selectionStart; 
     var text = textbox.value.replace(/\D/g, ""); 
     var ddd = text.substring(0, 2).replace(/\ /, ""); 
     var firstSet = text.length == 11 ? text.substring(2, 7) : text.substring(2, 6); 
     var secondSet = text.length == 11 ? text.substring(7, 11) : text.substring(6, 10); 
     textbox.value = "(" + ddd + ")" + firstSet + "-" + secondSet; 
     if (textbox.value.charAt(next - 1).match(/\D/) && event.char.match(/[0-9()-]/)) 
      next++; 
     textbox.selectionStart = next; 
     textbox.selectionEnd = next; 
     textbox.focus(); 
    } 
} 

EDIT: Update после получения моего первого ответа:
Извините, но мне нужно событие OnKeyUp, потому что мне нужно определить ключ, вызвавший событие.

ответ

0

Я думаю, что это не должно быть OnKeyUp вместо OnTextChanged. Вы можете сослаться на эту страницу onkeyup event asp.net

+0

OnTextChanged не позволяет мне отправить событие. Мне нужно знать, какая кнопка была нажата. – Lucas

Смежные вопросы