【发布时间】:2019-05-22 00:41:25
【问题描述】:
我需要将三个不同的 Jquery Ui 日期选择器放在一个页面上。第一个日期选择器是普通的“选择一天”日期选择器,第二个允许用户选择每周的日期范围,最后一个允许用户按月/年选择日期。
我可以让所有三个日期选择器单独工作,但我不能让它们都在同一页面上工作。正确的是,所有三个选择器只会让我在它们都在同一页面上时按周选择日期。
我尝试过 if/else 语句、show hide 语句以及我能想到的大约一千种其他方法,但似乎没有任何效果。任何帮助将不胜感激!
这是我的日期选择器的代码:
//datepicker for day
$('#daypicker').datepicker();
//datepicker for week
$(function () {
var startDate,
endDate,
selectCurrentWeek = function () {
window.setTimeout(function () {
$('#weekpicker').datepicker('widget').find('.ui-datepicker-current-day a').addClass('ui-state-active')
}, 1);
};
$('#weekpicker').datepicker({
"showOtherMonths": true,
"selectOtherMonths": true,
"onSelect": function (dateText, inst) {
var date = $(this).datepicker('getDate'),
dateFormat = inst.settings.dateFormat || $.datepicker._defaults.dateFormat;
startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 6);
$('#weekpicker').val($.datepicker.formatDate(dateFormat, startDate, inst.settings) + ' - ' + $.datepicker.formatDate(dateFormat, endDate, inst.settings));
selectCurrentWeek();
},
"beforeShow": function () {
selectCurrentWeek();
},
"beforeShowDay": function (date) {
var cssClass = '';
if (date >= startDate && date <= endDate) {
cssClass = 'ui-datepicker-current-day';
}
return [true, cssClass];
},
"onChangeMonthYear": function (year, month, inst) {
selectCurrentWeek();
}
}).datepicker('widget').addClass('ui-weekpicker');
$('.ui-weekpicker').on('mousemove', 'tr', function () {
$(this).find('td a').addClass('ui-state-hover');
});
$('.ui-weekpicker').on('mouseleave', 'tr', function () {
$(this).find('td a').removeClass('ui-state-hover');
});
});
//datepicker for month/year
$( "#monthpicker" ).datepicker({
dateFormat: "mm/yy",
changeMonth: true,
changeYear: true
});
这里是 html:
<div class="day">
<label for="daypicker">Month</label>
<input class="datepicker" type="text" id="daypicker">
</div>
<div class="week">
<label for="weekpicker">Month</label>
<input class="datepicker" type="text" id="weekpicker">
</div>
<div class="month">
<label for="monthpicker">Month</label>
<input class="datepicker" type="text" id="monthpicker">
</div>
【问题讨论】:
-
请详细说明什么不起作用:您是否收到错误消息?是否发生了一些不良行为?
-
没有错误,但是当所有三个都在同一页面上时,周选择器优先于所有选择器,并且在所有三个日历中只能按周选择
-
你能试着把你所有的 datepicker js 放在
$(function () {..}里面,而不是只放几个星期吗? -
我尝试将我所有的 datepicker js 放在` $(function () {..} ` 中,但它仍然不起作用。没有错误消息,但只有星期选择器显示在所有日历。我以前看过您链接到的文章,但在这种情况下似乎没有帮助。
标签: jquery jquery-ui jquery-ui-datepicker