0

他のフィールドは正常に機能しているのに、クリックした後、1 つのフィールド (電話番号) がその MaskedEditExtender を保持していない理由がわかりません。プロパティとコントロールを比較しましたが、すべて同じです。

Validation Expression がマスクと一致しないことに関係があると思われますが、シンボル [() と -] の例外を追加しようとすると、機能しませんでした (または間違っていました)。

問題児:

<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」が「Date」に設定されていたためです。電話番号用のものはありません。したがって、それは数字として扱われていたか、何もないものとして扱われていました。どちらも、日付のようにデフォルトの電話番号形式を持っていません。

ただし、これにより正規表現で ValidationExpression が台無しになりました (送信されるデータの一部として Validation Expression をカウントしていたため、マスクが使用していた書式を式に追加する必要があったため)。これ:

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

成功!

ここに画像の説明を入力

これが他の誰かに役立つことを願っています。

于 2016-05-20T14:07:43.317 に答える