2012-11-16 75 views
1

我試圖強制用戶輸入的時間信息的15分鐘粒度。因此,例如,下午12:15和凌晨3:45和上午9:30。都是可以接受的,但下午2:35是不允許的。服務器端驗證是有效的,但如果在文本框失去焦點時告知用戶輸入無效,那麼在用戶點擊提交按鈕之前它會很好。下面是代碼:MaskedEditValidator無法在客戶端工作

 <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分鐘的間隔約束?

+0

因此,當文本框失去焦點時驗證不會發生?如果我在2:35輸入並按下回車,它會告訴我時間格式無效。但是,如果我只是從文本框中刪除,我不會驗證。 –

+0

正確。問題是,它不驗證文本框何時失去焦點。 – Matt

回答

2

這似乎過於簡單,但它似乎工作。

我做的第一件事是將RegularExpressionValidator註釋掉 - 你並不需要這個和MaskedEditValidator。爲了證明這一點,請申請下面的修正,但不要評論出RegularExpressionValidator。驗證失敗後,您將看到兩個錯誤。

的最後一件事是與InvalidValueMessage屬性以替換MaskedEditValidatorText屬性:

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

This example給了我關於使用正確的屬性的提示。

做這兩件事情導致驗證發生時,退出控制。這也表明MaskedEditValidator一直在驗證。

+0

你完全搖滾!謝謝! – Matt

相關問題