2015-06-03 107 views
0

我有日期進行比較:日期比較驗證問題

日期從日期時間=選擇器, 日期爲=日期時間選擇器。

我在每個日期時間選擇器中有2個比較驗證器。 1.將驗證程序與運算符DataTypeCheck進行比較 2.比較驗證程序以比較Date From和Date To。

在我的計劃

日期時間格式爲(DD/MM/YYY)(文化= 「EN-GB」)

如果鍵入DateFrom = 15/01/2015和DateTo = 2015年1月1日,該第二個驗證器將被執行。 「日期從不能大於日期到」。 (這是一個精細)

如果鍵入DateFrom = 32/01/2015和DateTo = 2015年1月1日,第1驗證器將被執行。 「日期無效」。 (這是一個精細)

但如果I型DateFrom = 2015年1月1日和DateTo = 32/01/2015所述的第一和第二確認器將被執行。 「日期無效」「日期從不能大於日期到」。 (這是一個問題)

如何使僅有1驗證執行,如果我在DateTo類型? 如果鍵入DateTo = 32/01/2015驗證只是「日期無效」

這是我的代碼

<tr> 
         <td style="width: 96px" class="text">APD Date 
         </td> 
         <td style="width: 800px"> 
          <asp:TextBox 
           AutoPostBack="false" 
           runat="server" 
           ID="txtAPDDateStart" 
           CssClass="textbox" 
           Width="100px" /> 
          <asp:ImageButton 
           ID="imgApprovalDateStart" 
           runat="server" 
           ImageUrl="~/Images/Calendar/Calendar.gif" 
           CausesValidation="False" /> 
          <asp:RequiredFieldValidator 
           CssClass="textError" 
           ID="RequiredFieldValidator46" 
           ValidationGroup="Submit" 
           runat="server" 
           ErrorMessage="*" 
           ControlToValidate="txtAPDDateStart" 
           EnableClientScript="true" 
           Enabled="true" 
           SetFocusOnError="true" 
           Display="Dynamic"></asp:RequiredFieldValidator> 

          <asp:CompareValidator ID="cpvApprovalDateFromValidator" runat="server" ControlToValidate="txtAPDDateStart" CssClass="textError" Display="Dynamic" ErrorMessage="Date is not valid" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator> 
          <asp:Label runat="server" CssClass="text" Text="To"></asp:Label> 
          <cc1:MaskedEditExtender 
           ID="meeApprovalDateStart" 
           runat="server" 
           TargetControlID="txtAPDDateStart" 
           Mask="99/99/9999" 
           MessageValidatorTip="true" 
           MaskType="Date" 
           AcceptNegative="Left" 
           ErrorTooltipEnabled="True" /> 
          <cc1:CalendarExtender 
           ID="ceApprovalDateStart" 
           Format="dd/MM/yyyy" 
           runat="server" 
           TargetControlID="txtAPDDateStart" 
           PopupButtonID="imgApprovalDateStart" /> 

          <asp:TextBox ID="txtAPDDateEnd" 
           runat="server" AutoPostBack="false" 
           CssClass="textbox" 
           Width="100px" /> 
          <asp:ImageButton ID="imgApprovalDateEnd" 
           runat="server" 
           CausesValidation="False" 
           ImageUrl="~/Images/Calendar/Calendar.gif" /> 
          <cc1:MaskedEditExtender 
           ID="meeApprovalDateEnd" 
           runat="server" 
           TargetControlID="txtAPDDateEnd" 
           Mask="99/99/9999" 
           MessageValidatorTip="true" 
           MaskType="Date" 
           AcceptNegative="Left" 
           ErrorTooltipEnabled="True" /> 
          <cc1:CalendarExtender 
           ID="ceApprovalDateEnd" 
           Format="dd/MM/yyyy" 
           runat="server" 
           TargetControlID="txtAPDDateEnd" 
           PopupButtonID="imgApprovalDateEnd" /> 
          <asp:RequiredFieldValidator 
           CssClass="textError" 
           ID="RequiredFieldValidator1" 
           ValidationGroup="Submit" 
           runat="server" 
           ErrorMessage="*" 
           ControlToValidate="txtAPDDateEnd" 
           EnableClientScript="true" 
           Enabled="true" 
           SetFocusOnError="true" 
           Display="Dynamic"></asp:RequiredFieldValidator> 
          <asp:CompareValidator ID="cpvApprovalDateToValidator" runat="server" ControlToValidate="txtAPDDateEnd" CssClass="textError" Display="Dynamic" ErrorMessage="Date is not valid" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator> 
          &nbsp;<asp:CompareValidator ID="cpvApprovalDateValidator" runat="server" ControlToCompare="txtAPDDateStart" ControlToValidate="txtAPDDateEnd" CssClass="textError" Display="Dynamic" ErrorMessage="Date From cannot be greater than Date To" Operator="GreaterThanEqual" Type="Date"></asp:CompareValidator> 
         </td> 
        </tr> 

回答

0

嗨,你可以使用JavaScript來承擔驗證您的日期 這裏代碼如下:

function ValidateDate1() { 
 
      //debugger; 
 

 
      var alenddt = document.getElementById('<%= Yourstartdatetextboxid.ClientID %>').value; 
 
      if (alenddt.length == 10) { 
 
       var splits = alenddt.split("/"); 
 
       var dt = new Date(splits[1] + "/" + splits[0] + "/" + splits[2]); 
 
       //Validation for Dates 
 

 
       if (dt.getDate() == splits[0] && dt.getMonth() + 1 == splits[1] 
 

 
        && dt.getFullYear() == splits[2]) { 
 

 
       } 
 

 
       else { 
 
        document.getElementById('<%= errormesssageoflabelid.ClientID %>').style.display = 'inline'; 
 
        document.getElementById('<%= Yourstartdatetextboxid.ClientID %>').value = ""; 
 
        hideuser(); 
 
        return; 
 

 
       } 
 
      } 
 
     }

並且在該功能hideuserç頌歌隱藏錯誤的標籤信息5秒

function hideuser() { 
 
      window.setTimeout(function() { 
 
       // This will execute 5 seconds later 
 
       var label = document.getElementById('<%=lbMessage.ClientID %>'); 
 
       
 
       
 
       if (label != null) { 
 
        label.style.display = 'none'; 
 
       } 
 
       
 
      }, 5000); 
 
     }

後從開始的文本框調用這個函數像這樣的onkeyup =「ValidateDate()」

同你endtextbox這樣做你可以把錯誤的日期後看到文本框的文本將是空白,屏幕會顯示無效的日期 供大家參考檢查這個網站:link