0

我无法弄清楚为什么我的一个字段(电话号码)在您点击离开后没有保留它的 MaskedEditExtender,而其他字段工作得很好。我比较了属性和控件,它们都是一样的。

我怀疑这与我的验证表达式与我的掩码不匹配有关,但是当我尝试添加符号 [() 和 -] 的例外时,它不起作用(或者我做错了)。

问题孩子:

<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" />

结果(在输入电话号码时):

在此处输入图像描述

导致(在进入后点击离开后):

在此处输入图像描述

我怎样才能让那个面具粘住?

4

1 回答 1

0

我自己想通了:

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

ClearMaskOnLostFocus="false" 

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

我的日期字段没有出现此问题的原因是因为“MaskedEditExtender”的“MaskType”设置为“日期”。电话号码没有一个,因此它将它视为一个数字或什么都没有,它们都没有像日期那样的默认电话号码格式。

但是,这确实弄乱了正则表达式中的 ValidationExpression (因为它将验证表达式计算为正在提交的数据的一部分,因此我需要将我的掩码使用的格式添加到我的表达式中),但我只是将其调整为这个:

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

成功!

在此处输入图像描述

希望这对其他人有帮助。

于 2016-05-20T14:07:43.317 回答