单击后MaskedEditExtender没有保持Mask

时间:2016-05-19 20:32:21

标签: c# asp.net maskededitextender

我无法弄清楚为什么我的一个字段(电话号码)在你点击之后没有拿着它的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" />

导致(输入电话号码时):

enter image description here

导致(在录入后点击之后):

enter image description here

我怎样才能戴上面具?

1 个答案:

答案 0 :(得分:0)

自己想出来:

在“MaskedEditExtender”中,我需要添加此控件:

ClearMaskOnLostFocus="false" 

这会强制面罩始终粘住。我现在也将它应用于我所有的其他面具(日期,邮政编码等)。

我的Date字段没有出现此问题的原因是因为“MaskedEditExtender”的“MaskType”设置为“Date”。没有一个用于电话号码,因此它将其视为数字或任何内容,它们都没有像Date那样的默认电话号码格式。

然而,这确实搞砸了我在正则表达式中的ValidationExpression(因为它将Validation Expression作为提交数据的一部分进行计数,因此我需要将我的掩码使用的格式添加到我的表达式中),但我只是将其调整为:

ValidationExpression="^\([2-9]\d{2}\) \d{3}\-\d{4}$"

成功!

enter image description here

希望这有助于其他人。