1

ユーザーが入力した時間情報に15分の粒度を適用しようとしています。したがって、たとえば、午後12時15分と午前3時45分と午前9時30分はすべて許容されますが、午後2時35分は許可されません。サーバー側の検証は機能しますが、送信ボタンをクリックする前に、テキストボックスがフォーカスを失ったときに入力が無効であるとユーザーに通知された場合は便利です。コードは次のとおりです。

        <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="True" UpdateMode="Always">
            <ContentTemplate>
                <asp:TextBox ID="txtStartTime" runat="server" AutoPostBack="True" CausesValidation="True"/>
                <Ajax:MaskedEditExtender ID="txtStartTime_MaskedEditExtender" runat="server" 
                    TargetControlID="txtStartTime" MaskType="Time" AcceptAMPM="True"
                    Mask="99:99">
                </Ajax:MaskedEditExtender>
                <asp:RequiredFieldValidator runat="server" ID="StartTimeRequired" 
                    ValidationGroup="EventAddEditControls" ControlToValidate="txtStartTime" 
                    EnableClientScript="True" SetFocusOnError="True">*</asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
                    ErrorMessage="Invalid time format." ControlToValidate="txtStartTime" 
                    ValidationGroup="EventAddEditControls" SetFocusOnError="True" 
                    EnableClientScript="True" Text="Invalid time format."
                    ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$" />
                <Ajax:MaskedEditValidator ID="MaskedEditValidator1" ControlToValidate="txtStartTime"
                    ControlExtender="txtStartTime_MaskedEditExtender" IsValidEmpty="False" 
                    ValidationGroup="EventAddEditControls" 
                    ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$" 
                    EnableClientScript="True" SetFocusOnError="True" Text="Time format is invalid."
                    runat="server"></Ajax:MaskedEditValidator>
            </ContentTemplate>
        </asp:UpdatePanel>

MaskedEditExtenderにクライアント側でも15分の粒度制約を適用させるにはどうすればよいですか(これが可能であると仮定して)?

4

1 に答える 1

2

これは非常に単純に思えますが、うまくいくようです。

私が最初に行ったのは、をコメントアウトすることでしたRegularExpressionValidator-これとの両方は実際には必要ありませんMaskedEditValidator。要点を証明するために、以下の修正を適用しますが、RegularExpressionValidator. 検証に失敗すると、両方のエラーが表示されます。

最後に、のプロパティを次のTextプロパティに置き換えました。MaskedEditValidatorInvalidValueMessage

<Ajax:MaskedEditValidator ID="MaskedEditValidator1" ControlToValidate="txtStartTime"
    ControlExtender="txtStartTime_MaskedEditExtender" IsValidEmpty="False" 
    ValidationGroup="EventAddEditControls" 
    ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$" 
    EnableClientScript="True" SetFocusOnError="True"
    InvalidValueMessage="Time format is invalid." runat="server">
</Ajax:MaskedEditValidator>

この例は、使用する正しいプロパティに関するヒントを与えてくれました。

これらの両方を実行すると、コントロールの外にタブ移動したときに検証が発生しました。MaskedEditValidatorこれは、がずっと検証中であったことも示しています。

于 2012-11-21T06:00:26.240 に答える