我有一个ASP.Net表单,用户可以从Calendar Extender控件中选择日期,我有2个日期字段(FromDate& ToDate)。
我想使用javascript验证以下内容:
如果两个条件都为真,我希望从代码隐藏中调用一个方法,该方法将计算选定时间段内的总天数(不包括周末)并将其显示给用户(此方法可以正常工作)。
在下面的代码中,我尝试了__doPostBack,以便在满足前面提到的两个条件时触发codebehind方法。它触发了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" />
如果有办法实现这一点,请告诉我。
谢谢,
答案 0 :(得分:0)
你在找这样的东西吗?我在这里添加了Fiddle。我使用了jquery ui日期选择器,但您可以使用您选择的任何日期选择器,前提是值为'yyyy / mm / dd'或'mm / dd / yyyy'我认为