Javascript Jquery日期选择器中的多个设置
在这件事上似乎有很多有用的话题,所以我不能把它们全部结合起来。它们工作得很好。但它结合了我遇到问题的功能 我所拥有的: 使用jquery日期选择器的“from”和“to”输入字段。 用户选择“开始”日期,然后“结束”日期将允许根据所选日期在未来+4天内进行选择。编辑 第三个隐藏字段计算两个选择之间的天数。 以下是我目前拥有的一把小提琴: 问题是: 如果用户在一个月内选择“从”,在另一个月内选择“到”,即:2013年8月30日-2013年9月2日,则计算字段错误。 “收件人”字段未考虑之前所选字段的minDate 4天以上。 最后,这是我的代码所有这些都在上面的提琴中:Javascript Jquery日期选择器中的多个设置,javascript,jquery-ui,jquery-ui-datepicker,Javascript,Jquery Ui,Jquery Ui Datepicker,在这件事上似乎有很多有用的话题,所以我不能把它们全部结合起来。它们工作得很好。但它结合了我遇到问题的功能 我所拥有的: 使用jquery日期选择器的“from”和“to”输入字段。 用户选择“开始”日期,然后“结束”日期将允许根据所选日期在未来+4天内进行选择。编辑 第三个隐藏字段计算两个选择之间的天数。 以下是我目前拥有的一把小提琴: 问题是: 如果用户在一个月内选择“从”,在另一个月内选择“到”,即:2013年8月30日-2013年9月2日,则计算字段错误。 “收件人”字段未考虑之前所选字段
$(function () {
$("#from, #to").datepicker({
onSelect: function () {
var from = new Date($("#from").val().split("/").reverse().join(","));
var to = new Date($("#to").val().split("/").reverse().join(","));
var total = ((to - from) / 2592000000);
var rounded = Math.round(total);
$("#totaldays").val(rounded);
}
});
$("#from").datepicker({
minDate: 4,
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 2,
onClose: function (selectedDate) {
$("#to").datepicker("option", "minDate", selectedDate);
}
});
$("#to").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 2,
onClose: function (selectedDate) {
$("#from").datepicker("option", "maxDate", selectedDate);
}
});
});
非常感谢任何能在这方面提供帮助的人 所以在接受我的答案后,这里是我代码的正确版本。 做你想做的事情基本上很简单。 如果有人选择了开始日期,则to datepicker中的第一个可能的日期距离将来还有4天。因此,我们使用minDate选项并使用setDate计算新日期。 在选择第二个日期后,我们调用totalDays函数,该函数减去两个日期,产生差值,并将差值转换为天数。 如果用户首先选择了截止日期,我们也会调用TotalDays,但为了不显示负日期,我们会检查是否设置了起始日期。如果不是或天数为负数,则不显示任何值
$(function () {
$("#from").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 2,
minDate: 4,
onSelect: function (selectedDate) {
//set #to date +4 days in the future, starting from #from date
var fromDate = new Date(selectedDate);
var minDate = new Date(fromDate.setDate(fromDate.getDate() + 4));
$("#to").datepicker("option", "minDate", minDate);
},
onClose: function (selectedDate) {
//alternatively call it in onSelect
totalDays();
}
});
$("#to").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 2,
minDate: 4,
onClose: function (selectedDate) {
//alternatively call it in onSelect
totalDays();
}
});
function totalDays() {
//subtract the two Date objects, convert seconds to days
var from = $('#from').datepicker('getDate');
var to = $('#to').datepicker('getDate');
var seconds = to - from;
var days = Math.ceil(seconds / (1000 * 3600 * 24));
//dont fill in value if only #to has a valid
if (days > 0 && from) {
$('#totaldays').val(days);
}
}
});
谢谢@j08691我会记住你上面更正的格式。首先,谢谢你。我把代码玩弄了一点,意识到我错误地误导了你。截止日期与起始日期之间的minDate应为+4。抱歉,这不是我给你介绍的最重要的约会。我注释掉了$'to'.datepicker'option','maxDate',maxDate;但是,一旦您选择它,它仍然会更正代码。我应该删除哪一部分来缓解这个问题?下面是我在上面的评论中的一个扩展:如果你选择了一个超过4天的范围,它会自动调整为4天。我想然后在to Date Picker的onSelect函数中注释掉所有内容。这适合你的需要吗?如果是的话,我会更正我的答案。是的,没错。为了保持连续性,我在ToDatePicker下添加了minDate:4,这样,如果用户首先选择to字段,他们就不能选择与from字段不同的日期,尽管我想这并不重要,因为在选择from之后,它将被覆盖。非常感谢您在这方面的帮助!除了代码中的注释之外,它真的很有帮助!不客气!我只是用正确的答案编辑了我的答案,以消除误解;