我的jquery日期选择器完全按照预期工作,但我的问题是,如果从文本框中删除其中一个日期选择器,则日期计算框(CalcDate1)中的值应该消失。我的代码如下
<script type="text/javascript">
$(function () {
$('#datepicker7').datepicker({
showOnFocus: false,
showTrigger: '#calImg',
beforeShowDay: $.datepicker.noWeekends,
pickerClass: 'noPrevNext',
dateFormat: "dd-mm-yy", changeMonth: true, changeYear: true,
onClose: function (selectedDate) { $("#datepicker8").datepicker("option", "minDate", selectedDate) },
onSelect: function (dateStr) {
var min = $(this).datepicker('getDate');
$('#datepicker8').datepicker('option', "calculateWeek", min);
datepicked();
}
});
$('#datepicker8').datepicker({
showOnFocus: false,
showTrigger: '#calImg',
beforeShowDay: $.datepicker.noWeekends,
pickerClass: 'noPrevNext',
dateFormat: "dd-mm-yy", changeMonth: true, changeYear: true,
onSelect: function (dateStr) {
var max = $(this).datepicker('getDate');
$('#datepicker7').datepicker('option', "calculateWeek", max);
datepicked();
}
});
});
var datepicked = function () {
var from = $('#datepicker7');
var to = $('#datepicker8');
var nights = $('#CalcDate1');
var startDate = from.datepicker('getDate');
startDate.setDate(startDate.getDate() + 1);
var endDate = to.datepicker('getDate')
// Validate input
if (endDate && startDate) {
// Calculate days between dates
var millisecondsPerDay = 86400 * 1000; // Day in milliseconds
startDate.setHours(0, 0, 0, 1); // Start just after midnight
endDate.setHours(23, 59, 59, 999); // End just before midnight
var diff = endDate - startDate; // Milliseconds between datetime objects
var days = Math.ceil(diff / millisecondsPerDay);
// Subtract two weekend days for every week in between
var weeks = Math.floor(days / 7);
var days = days - (weeks * 2);
// Handle special cases
var startDay = startDate.getDay();
var endDay = endDate.getDay();
// Remove weekend not previously removed.
if (startDay - endDay > 1)
var days = days - 2;
// Remove start day if span starts on Sunday but ends before Saturday
if (startDay == 0 && endDay != 6)
var days = days - 1
// Remove end day if span ends on Saturday but starts after Sunday
if (endDay == 6 && startDay != 0)
var days = days - 1
nights.val(days);
}
}
</script>
我将以下两段代码添加到他们的相对日期选择器中,但它们不起作用
keyup(function(e) {
if(e.keyCode == 8 || e.keyCode == 46) {
$.datepicker._clearDate(this);
$( "#datepicker8" ).datepicker( "option", "minDate", "today" );
}
});
keyup(function(e) {
if(e.keyCode == 8 || e.keyCode == 46) {
$.datepicker._clearDate(this);
$( "#datepicker7" ).datepicker( "option", "maxDate", "" );
}
});
我的html助手是
<div class="form-group">
@Html.LabelFor(model => model.DateToAdvisors, "Date To Advisors", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@Html.TextBoxFor(model => model.DateToAdvisors, new { @class = "datepicker7", id = "datepicker7" })
@Html.ValidationMessageFor(model => model.DateToAdvisors)
</div>
</div>
<div class="form-group" style="padding-top:75px">
@Html.LabelFor(model => model.ReplyFormAdvisors, "Reply From Advisors", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@Html.TextBoxFor(model => model.ReplyFormAdvisors, new { @class = "datepicker8", id = "datepicker8" })
@Html.ValidationMessageFor(model => model.ReplyFormAdvisors)
</div>
</div>
<div class="form-group" style="padding-top:175px">
@Html.LabelFor(model => model.CalcDate1, "Date Calculated", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@Html.TextBoxFor(model => model.CalcDate1)
@Html.ValidationMessageFor(model => model.CalcDate1)
</div>
</div>