RegularExpressionValidator无法处理javascript OnKeyUp事件
这里有一个asp:TextBox、一个RegularExpressionValidator和一个ValidatorCalloutExtender 我的问题是:没有OnKeyUp事件,它工作正常,文本框被验证,当它无效时变为红色。RegularExpressionValidator无法处理javascript OnKeyUp事件,javascript,asp.net,regex,masking,Javascript,Asp.net,Regex,Masking,这里有一个asp:TextBox、一个RegularExpressionValidator和一个ValidatorCalloutExtender 我的问题是:没有OnKeyUp事件,它工作正常,文本框被验证,当它无效时变为红色。 但当我添加事件时,它会停止验证,文本框中可以有任何文本,并且不会变为红色。 下面是一些代码: ASP.NET: <asp:TextBox ID="txtTelefone" runat="server" OnKeyUp="maskField
但当我添加事件时,它会停止验证,文本框中可以有任何文本,并且不会变为红色。
下面是一些代码: 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>
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();
}
}
编辑:收到我的第一个答案后更新:
很抱歉,我需要OnKeyUp事件,因为我需要识别导致该事件的密钥。我认为不应将其改为OnKeyUp。您可以参考此页面OnTextChanged不允许我发送事件。我需要知道按下了什么按钮。