2013-04-10 91 views
-1

如何檢查兩個日期是否在同一月份和年份?我應該使用哪個驗證控件來實現?我正在考慮使用客戶端驗證(如果可能的話)檢查兩個日期是否在同一個月

謝謝!

+0

給我充分說明..... PLZ – 2013-04-10 08:21:21

+0

http://stackoverflow.com/questions/939802/date-validation-with-asp -net-驗證 – CloudyMarble 2013-04-10 08:22:02

回答

1

假設日期是 「DD/MM/YYYY」 格式,則可以使用此javascript函數用一個定製的驗證。

ASPX

<asp:CustomValidator ID="CustomValidator1" runat="server" 
    EnableClientScript="true" 
    ErrorMessage="ERROR MESSAGE HERE" 
    ClientValidationFunction="checkDate"> 
</asp:CustomValidator> 

的JavaScript

function checkDate() { 
    var date1=document.getElementById('<%=txtDate1.ClientID%>').value; 
    var date2=document.getElementById('<%=txtDate1.ClientID%>').value; 
    var date1Values=date1.split("/"); 
    var date2Values=date2.split("/"); 
    if (date1Values[2] == date2Values[2] && date1Values[1] ==date2Values[1]) { 
    args.IsValid = true; 
    } 
    else 
    { 
    args.IsValid = false; 
    } 
} 

你應該有服務器驗證碼太多,如果JavaScript已禁用。見Tim的答案。

2

你可以使用一個CustomValidator

ASPX:

<asp:CustomValidator runat="server" 
    ID="valMonth" 
    onservervalidate="ServerValidation" 
    onclientvalidate="ClientValidate" 
    ErrorMessage="From and To must be in the same month" /> 

的ServerValidate:

protected void ServerValidation (object source, ServerValidateEventArgs args) 
{  
    DateTime dtFrom; 
    DateTime dtTo; 
    if(DateTime.TryParse(TxtFrom.Text, out dtFrom) && DateTime.TryParse(TxtTo.Text, out dtTo)) 
    { 
     args.IsValid = dtFrom.Year == dtTo.Year && dtFrom.Month == dtTo.Month; 
    } 
    else 
    { 
     args.IsValid = false; 
    } 
} 

你也應該增加兩個CompareValidators這是否都是有效的日期。 要提供ClientValidationFunction,您可以查看getMonthgetFullYear函數。

例如(未測試):

<script language="javascript"> 
    <!-- 
    function ClientValidate(source, arguments) 
    { 
     var txtFrom = document.getElementById('<%= TxtFrom.ClientID %>'); 
     var txtTo = document.getElementById('<%= txtTo.ClientID %>'); 
     var dtFrom = new Date(txtFrom.value); 
     var dtTo = new Date(txtTo.value); 
     var monthFrom = dtFrom.getMonth(); 
     var monthTo = dtTo.getMonth(); 
     var yearFrom = dtFrom.getFullYear(); 
     var yearTo = dtTo.getFullYear(); 

     arguments.IsValid = yearFrom == yearTo && monthFrom == monthTo; 
    } 
    // --> 
</script> 
0

下面是一個使用CustomValidator控制一個短期和簡單的例子

Date 1<asp:TextBox ID="txtDate1" runat="server" /> 
    <br /> 
    Date 2<asp:TextBox ID="txtDate2" runat="server" /> 
    <br /> 
    <asp:Button ID="btnCompare" runat="server" Text="Compare" /> 
    <asp:CustomValidator ID="dateValidator" runat="server" ErrorMessage="The two dates must be in the same month and year" 
     OnServerValidate="ValidateDate" /> 
    <script runat="server"> 
     protected void ValidateDate(object source, ServerValidateEventArgs args) 
     { 
      DateTime date1 = DateTime.Parse(txtDate1.Text); 
      DateTime date2 = DateTime.Parse(txtDate2.Text); 

      if (date1.Month != date2.Month || date1.Year != date2.Year) 
       args.IsValid = false; 
     } 
    </script> 
相關問題