使 MaskedEditExtender Mask 可选
Make MaskedEditExtender Mask optional
这里我有一个 MaskedEditExtender,带有一个使用正则表达式的验证器。
它验证 phone 个 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 个数字。
但是 "Mask" 字段不允许。
我需要 MaskedEditExtender 在我没有键入所有字符时停止哭泣,因为它们不是必需的。我需要验证我的字段的是正则表达式。
MaskedEditExtender 只是为了提供一个掩码,允许我只键入数字并在开头有一个 (99)。它不需要验证任何东西。
好吧,似乎 MaskedEditExtender 中没有这样的功能可以让您在掩码中放置少于字符,所以我做了一个小的解决方法:
我已将自动完成放在掩码中,调整正则表达式以在字符串末尾接受一个空 space 并在每次我想使用 TextBox 的值时对其进行修剪。
- 在MaskedEditValidator中:
ValidationExpression="^\(\d{2}\)\d{4,5}-\d{4} *$"
- 在MaskedEditExtender中:
AutoComplete="true" AutoCompleteValue=""
- 在 CodeBehind 中:
txtTelefone.Text.Trim();
有了这个,所有未填充的字符将被替换为字符串末尾的 space,正则表达式将负责验证,Trim() 将删除 space秒。因此允许您将掩码的长度设为可选。
在 MaskedEditExtender
上设置 ClearMaskOnLostFocus="true"
。
这里我有一个 MaskedEditExtender,带有一个使用正则表达式的验证器。
它验证 phone 个 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 个数字。
但是 "Mask" 字段不允许。
我需要 MaskedEditExtender 在我没有键入所有字符时停止哭泣,因为它们不是必需的。我需要验证我的字段的是正则表达式。
MaskedEditExtender 只是为了提供一个掩码,允许我只键入数字并在开头有一个 (99)。它不需要验证任何东西。
好吧,似乎 MaskedEditExtender 中没有这样的功能可以让您在掩码中放置少于字符,所以我做了一个小的解决方法:
我已将自动完成放在掩码中,调整正则表达式以在字符串末尾接受一个空 space 并在每次我想使用 TextBox 的值时对其进行修剪。
- 在MaskedEditValidator中:
ValidationExpression="^\(\d{2}\)\d{4,5}-\d{4} *$"
- 在MaskedEditExtender中:
AutoComplete="true" AutoCompleteValue=""
- 在 CodeBehind 中:
txtTelefone.Text.Trim();
有了这个,所有未填充的字符将被替换为字符串末尾的 space,正则表达式将负责验证,Trim() 将删除 space秒。因此允许您将掩码的长度设为可选。
在 MaskedEditExtender
上设置 ClearMaskOnLostFocus="true"
。