1

我正在使用實體框架.NET 4開發項目。有一個註冊頁面,其中有一個出生日期字段。我想驗證它,以便出生日期不能在將來或今天。此外,如果它可能比今天早5年。使用自定義驗證程序阻止將來的日期和今天的日期

這是我的代碼。

Date of Birth: 
<asp:RequiredFieldValidator ID="rfv_txtbx_DOB" runat="server" ControlToValidate="txtbx_DOB" CssClass="validator" Display="Dynamic" ErrorMessage="Date of Birth Required" SetFocusOnError="True" Text="*" ValidationGroup="vg" /> 
<asp:CustomValidator ID="cv_txtbx_DOB" runat="server" ControlToValidate="txtbx_DOB" CssClass="validator" Display="Dynamic" 
    ErrorMessage="Date of Birth cannot be today or in future" SetFocusOnError="True" Text="*" ValidationGroup="vg" ClientValidationFunction="validateDate"/> 
<asp:TextBox ID="txtbx_DOB" runat="server" CssClass="txtbx" Width="200px" /> 
<ajaxToolkit:CalendarExtender ID="txtbx_DOB_CalendarExtender" runat="server" Enabled="True" Format="dd-MM-yyyy" TargetControlID="txtbx_DOB" /> 
<script language="javascript" type="text/javascript"> 
    function Validate(sender, args) { 
     var currentDate = new Date().getDate(); 

      if (args.Value < currentDate) 
       args.IsValid = true; 
      else 
       args.IsValid = false; 
     } 
</script> 
+0

這是一個很好的鏈接http://stackoverflow.com/questions/6133539/how-can-i-validate-the-date-is-not-the-future-date-in-net-c-sharp – Ratna

回答

1

在頁面加載

protected void Page_Load(object sender, EventArgs e) 
{ 
    Calendar1.EndDate = DateTime.Now; //to dissable future Date 
} 

這裏是日曆擴展

http://www.karpach.com/ajaxtoolkit-calendar-extender-tweaks.htm

或者使用下面的Java腳本函數的所有限制的鏈接

function checkDate(sender, args) { 
    if (sender._selectedDate > new Date()) { 
      alert("You can select a day earlier than today!"); 
      sender._selectedDate = new Date(); 
      // set the date back to the current date 
      sender._textbox.set_Value(sender._selectedDate.format(sender._format)) 
    } 
+0

這是一個解決這個問題的方法,但我只想要一個javascript函數而不用其他任何東西,這樣我就可以輕鬆地重用它。 即時通訊問題是如何得到一個完整的日期(今天與ddmmyyy),並與我的控制的價值進行比較。我只想限制年輕用戶註冊。用戶必須是16歲,我沒有太多的JavaScript或jQuery的,所以我真的很渴望解決這個問題。 –

+0

你不應該完全相信客戶。 java腳本會給你的用戶系統日期可能不正確。顯示最好從服務器端進行設置。 –

+0

你是對的,但這是客戶的要求。我可以很容易地在服務器端確保這個年齡constaraint,但在客戶端卡住了,在註冊時填寫表單時應該顯示一個錯誤。 –

3
function check_date() 
{ 
var chkdate = document.getElementById("ID OF YOUR TEXT FIELD HERE").value; 

var edate = chkdate.split("/"); 
var spdate = new Date(); 
var sdd = spdate.getDate(); 
var smm = spdate.getMonth(); 
var syyyy = spdate.getFullYear(); 
var today = new Date(syyyy,smm,sdd).getTime(); 
var e_date = new Date(edate[2],edate[1]-1,edate[0]).getTime(); 
if(e_date > today) 
{ 
    alert("Date is not valid"); 
    return false; 
} 
}