我无法弄清楚为什么我的一个字段(电话号码)在你点击之后没有拿着它的MaskedEditExtender,而其他字段工作得很好。我比较了属性和控件,它们都是一样的。
我怀疑它与我的验证表达式无法匹配我的Mask,但是当我尝试添加符号[()和 - ]的例外时,它不起作用(或者我做错了)
问题孩子:
<div class="col-xs-6">
<asp:TextBox
runat="server"
ID="TextBox_PhoneNumber"
class="form-control"
Style="max-width: 145px" />
<asp:RegularExpressionValidator
ID="RegularExpressionValidator_PhoneNumber"
runat="server"
ControlToValidate="TextBox_PhoneNumber"
ErrorMessage="Invalid phone number."
ValidationExpression="^[2-9]\d{2}\d{3}\d{4}$"
Display="Dynamic"
SetFocusOnError="True"
Font-Bold="true"
ForeColor="red"
ValidationGroup="ValidationGroup_Main" />
<asp:RequiredFieldValidator
runat="server"
ID="RequiredFieldValidator_PhoneNumber"
ControlToValidate="TextBox_PhoneNumber"
ErrorMessage="Employee Info: Phone Number is blank."
Text="Required"
class="text-right"
Display="Dynamic"
Font-Bold="true"
ForeColor="red"
ValidationGroup="ValidationGroup_Main" />
<ajaxToolkit:MaskedEditExtender ID="maskededitextender_PhoneNumber" runat="server" TargetControlID="TextBox_PhoneNumber" Mask="(999) 999-9999" MaskType="Number" AcceptNegative="None" AutoComplete="false" />
导致(输入电话号码时):
导致(在录入后点击之后):
我怎样才能戴上面具?
答案 0 :(得分:0)
自己想出来:
在“MaskedEditExtender”中,我需要添加此控件:
ClearMaskOnLostFocus="false"
这会强制面罩始终粘住。我现在也将它应用于我所有的其他面具(日期,邮政编码等)。
我的Date字段没有出现此问题的原因是因为“MaskedEditExtender”的“MaskType”设置为“Date”。没有一个用于电话号码,因此它将其视为数字或任何内容,它们都没有像Date那样的默认电话号码格式。
然而,这确实搞砸了我在正则表达式中的ValidationExpression(因为它将Validation Expression作为提交数据的一部分进行计数,因此我需要将我的掩码使用的格式添加到我的表达式中),但我只是将其调整为:
ValidationExpression="^\([2-9]\d{2}\) \d{3}\-\d{4}$"
成功!
希望这有助于其他人。