这里我有一个MaskedEditExtender,带有使用正则表达式的验证器 它验证8或9位数的电话号码:
<asp:TextBox Style="width: 135px" ID="txtTelefone" runat="server"></asp:TextBox>
<ajaxToolkit:MaskedEditExtender
ID="MaskedEditExtender_Telefone"
TargetControlID="txtTelefone"
runat="server"
Mask="\(99\)9999NN9999"
OnInvalidCssClass="txt-TextBox-Error"
ValidateRequestMode="Enabled"
ErrorTooltipEnabled="True"
Filtered="-"
PromptCharacter=" "
ClearMaskOnLostFocus="false"/>
<ajaxToolkit:MaskedEditValidator
ID="MaskedEditValidator_Telefone"
runat="server"
ControlExtender="MaskedEditExtender_Telefone"
ControlToValidate="txtTelefone"
ValidationExpression="^\(\d\d\)\d\d\d\d+-\d\d\d\d$"
Display="Dynamic"></ajaxToolkit:MaskedEditValidator>
问题是:正如您在正则表达式中看到的那样,用户可以在&#39;)之间放置4或5位数字。和&#39; - &#39; 但是&#34;面具&#34;字段不允许。
当我不输入所有字符时,我需要MaskedEditExtender停止哭泣,因为它们不是必需的。我需要验证我的领域是正则表达式 MaskedEditExtender仅用于提供一个掩码,允许我只键入数字并在开始时有一个(99)。它不需要验证任何东西。
答案 0 :(得分:1)
好吧,似乎MaskedEditExtender中没有这样的功能允许你放置少于掩码中的字符,所以我做了一个小的解决方法:
我已经在掩码中放置了自动完成功能,修改了正则表达式以接受字符串末尾的空白空间,并在每次我想使用TextBox的值时修剪它。
ValidationExpression="^\(\d{2}\)\d{4,5}-\d{4} *$"
AutoComplete="true" AutoCompleteValue=""
txtTelefone.Text.Trim();
这样,所有未填充的字符将被替换为字符串末尾的空格,正则表达式将负责验证,Trim()将删除空格。这样就可以让Mask的长度可选。
答案 1 :(得分:0)
在ClearMaskOnLostFocus="true"
上设置MaskedEditExtender
。