我有一個ASP.Net窗體,用戶可以從Calendar Extender控件中選擇日期,我有2個日期字段(FromDate & ToDate)。Validation Dates using Javascript&ASP.Net
我想驗證使用javascript如下:
- 沒有fromdate應始終大於TODATE 少
- 沒有fromdate & TODATE應不小於今天的日期。
如果兩個條件都爲真,我想然後調用從代碼隱藏的方法,其將計算的總天數所選擇的期間內不包括週末和將其顯示給用戶(該方法正常工作) 。
在下面的代碼中,我試着用__doPostBack在前面提到的兩個條件滿足時觸發codebehind方法。它觸發代碼隱藏方法,但隨後javascript變量變得不正確(compareDate變量總是在每個函數調用&回發時遞增),因此所有結果都不正確。
* 下面是當前的方法我用它來驗證使用Javascript的日期,它是從OnClientDateSelectionChanged觸發的事件從兩個文本框的日曆擴展控制*
<script type="text/javascript">
var fromDate = new Date();
var toDate = new Date();
function checkDate(sender, args) {
if (sender.get_id() == 'CalendarExtenderFrom') {
fromDate = sender._selectedDate;
}
else if (sender.get_id() == 'CalendarExtenderTo') {
toDate = sender._selectedDate;
}
// Check if selected date is less than today's date
var todayDate = new Date();
var year = todayDate.getFullYear();
var month = todayDate.getMonth();
var day = todayDate.getDate();
var dateOnly = new Date(year, month, day);
if (sender._selectedDate < dateOnly) {
alert("You cannot select a day earlier than today!");
sender._textbox.set_Value("");
return;
}
// Check if FromDate > ToDate
if (document.getElementById('TextBoxDateOfLeave').value != "" && document.getElementById('TextBoxDateOfReturn').value != "") {
var compareDate = new Date(fromDate.getFullYear(), fromDate.getMonth(), (fromDate.getDate()) + 1, 00, 00, 00, 00);
if (toDate < compareDate) {
alert("(Return Date) should be greater than (Travel Date)");
sender._textbox.set_Value("");
return;
}
}
// If both conditions are met
window.__doPostBack('__Page', '');
}
</script>
ASP.Net控制:
<asp:TextBox ID="TextBoxDateOfLeave" runat="server" ClientIDMode="Static" ontextchanged="CalculateLeaveDays"></asp:TextBox>
<asp:CalendarExtender ID="CalendarExtenderFrom" runat="server" Enabled="True" Format="dd/MMM/yyyy" TargetControlID="TextBoxDateOfLeave" OnClientDateSelectionChanged="checkDate" />
<asp:TextBox ID="TextBoxDateOfReturn" runat="server" ClientIDMode="Static" ontextchanged="CalculateLeaveDays"></asp:TextBox>
<asp:CalendarExtender ID="CalendarExtenderTo" runat="server" Enabled="True" Format="dd/MMM/yyyy" TargetControlID="TextBoxDateOfReturn" OnClientDateSelectionChanged="checkDate" />
請讓我知道是否有辦法請點擊此處。
謝謝,
謝謝這幫了我很多:) – 2012-02-21 18:04:15