Asp.net 使MaskedEditExtender掩码成为可选
这里有一个MaskedEditExtender,带有使用正则表达式的验证器。Asp.net 使MaskedEditExtender掩码成为可选,asp.net,regex,masking,Asp.net,Regex,Masking,这里有一个MaskedEditExtender,带有使用正则表达式的验证器。 它用8或9位数字验证电话号码: <asp:TextBox Style="width: 135px" ID="txtTelefone" runat="server"></asp:TextBox> <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender_Telefone" TargetControlID="txtTelefo
它用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>
问题是:正如您在正则表达式中看到的,用户可以在“')和“-”之间放置4或5个数字。但是“掩码”字段不允许它 当我没有键入所有字符时,我需要MaskededitXtender停止哭泣,因为它们不是必需的。验证字段所需的全部内容是正则表达式。
MaskedEditExtender只提供一个掩码,该掩码允许我只键入数字,并且在列表中有一个(99)。它不需要验证任何内容。好吧,MaskedEditExtender中似乎没有这样的功能允许您在掩码中放置少于字符,所以我做了一个小的解决方法:
我在掩码中加入了autocomplete,调整了正则表达式以接受字符串末尾的空白,并在每次我想使用文本框的值时对其进行修剪
- 在MaskedEditValidator:
ValidationExpression=“^\(\d{2}\)\d{4,5}-\d{4}*$”
- 在MaskedEditExtender中:
AutoComplete=“true”AutoCompleteValue=”“
- 在codebeahind中:
txtTelefone.Text.Trim()代码>
这样,所有未填充的字符将被替换为字符串末尾的空格,正则表达式将负责验证,Trim()将删除空格。因此,允许您选择掩码的长度。在
MaskedEditExtender
上设置ClearMaskOnLostFocus=“true”
用户不能在“')和“-”之间放置4或5位数字。看见是的。或者,你的正则表达式更优雅,但我的正则表达式仍然有效,因为用户无论如何只能在文本框中输入最多10个字符。但是谢谢!当我没有完成掩码时,我只需要文本框不会变得无效,掩码中的第一个N需要是可选的尝试将ValidationExpression替换为ValidationExpression=“^(\(\)\uuuuuuuuuuuuuuu-)\(\d{2})\d{4,5}-\d{4}$”
和扩展代码中的ClearMaskOnLostFocus=“false”
。来自的想法。这里的问题是面具,而不是验证器。验证器表达式很好,但我需要使掩码的一个数字成为可选的。