【发布时间】:2015-09-02 07:08:23
【问题描述】:
我想要一个像 booking.com 上的日期选择器。
当另一个选择框中的月份+年份发生变化时,它会自动更改月份的日期+日期。我查看了 jQuery datepicker 的 API,但找不到任何对我有帮助的东西。
【问题讨论】:
-
到目前为止你做了什么?发布您的代码。这不是为您提供代码服务...
标签: javascript jquery jquery-ui datepicker
我想要一个像 booking.com 上的日期选择器。
当另一个选择框中的月份+年份发生变化时,它会自动更改月份的日期+日期。我查看了 jQuery datepicker 的 API,但找不到任何对我有帮助的东西。
【问题讨论】:
标签: javascript jquery jquery-ui datepicker
请参阅我创建了一个小提琴,您从 DatePicker 中选择日期,然后它将在另一个字段上更改为日/月/年。 :Demo
$(function() {
$("#fullDate").datepicker({
onClose: function(dateText, inst) {
$('#year').val(dateText.split('/')[2]);
$('#month').val(dateText.split('/')[0]);
$('#day').val(dateText.split('/')[1]);
}
});
});
【讨论】:
感谢您的意见。我终于想出了如何让它工作。
所以这里是任何想要这种功能的人的答案。
HTML
<select name="day" id="day">
<option value="">Select Day</option>
</select>
<select name="month" id="month">
<option value="">Select Month</option>
</select>
JS
function getMonths() {
var months = new Array(12);
months[0] = "Jan";
months[1] = "Feb";
months[2] = "Mar";
months[3] = "Apr";
months[4] = "May";
months[5] = "Jun";
months[6] = "Jul";
months[7] = "Aug";
months[8] = "Sep";
months[9] = "Oct";
months[10] = "Nov";
months[11] = "Dec";
var d = new Date();
var month = d.getMonth();
var year = d.getFullYear();
var monthsArray = new Array(13);
for (var i = 0; i < 13; i++) {
var now = new Date();
if (now.getMonth() == 11) {
var current = new Date(now.getFullYear() + 1, 0, 1);
} else {
var current = new Date(now.getFullYear(), now.getMonth() + i, 1);
}
monthsArray[current.getMonth() + 1 + '_' + current.getFullYear()] = months[current.getMonth()] + ' ' + current.getFullYear();
}
return monthsArray;
}
function getDaysInMonth(month, year, daySelector) {
var names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var date = new Date(year, month - 1, 1);
var days = [];
while (date.getMonth() == month - 1) {
days[date.getDate()] = (date.getDate() + " " + names[date.getDay()]);
date.setDate(date.getDate() + 1);
}
daySelector.find('option').remove();
daySelector.append($("<option></option>").attr("value", '').text("Day"));
for (var key in days) {
daySelector.append($("<option></option>").attr("value", key).text(days[key]));
}
}
var months = getMonths();
for (var key in months) {
$('#month')
.append($("<option></option>")
.attr("value", key)
.text(months[key]));
}
$('#month').change(function () {
var monthYear = $('#month').val().split('_');
getDaysInMonth(monthYear[0], monthYear[1], $('#day'));
});
【讨论】:
current 在getMonths 中的for 循环中无法访问控制流范围之外时,您如何使用它?