【发布时间】:2011-08-15 10:21:21
【问题描述】:
我有一个带有以下代码的日期选择器。我有一个下拉框,当下拉框发生变化时,我想在 ShowDay 之前启动 datePicker 函数。我该怎么做?
var freeDate;
我的部分代码如下:
$("#myDiv").datepicker({
showOtherMonths: true,
selectOtherMonths: true,
dateFormat: "yy/mm/dd",
onSelect: function(dateText, inst) {},
onChangeMonthYear: function(year, month, inst) {
$.ajax({
contentType: "application/json; charset=utf-8",
dataType: "json",
url: '@Url.Action("ListDates", "Party")',
data: {
date: new Date(year, month - 1, 1).toString("yyyy/MM/dd"),
userID: userID
},
success: function(data) {
freeDate = eval(data);
},
error: function(request, status, error) {}
});
},
beforeShowDay: function(dateToShow) {
var returnResult = new Array();
returnResult.push(true);
var itemMatched = false;
$.each(freeDate, function(key, value) {
if (new Date(parseInt(value.substr(6))).compareTo(dateToShow) == 0) {
itemMatched = true;
returnResult.push('timeNotFree');
return;
}
});
if (!itemMatched) returnResult.push('');
returnResult.push('');
return returnResult;
}
});
$('#myList').change(function() {
userID = $("#userList > option:selected").attr("value");
// myList is used to have freeDate and the DatePicker must be shown accordingly.
$.ajax({
contentType: "application/json; charset=utf-8",
dataType: "json",
url: '@Url.Action("ListDates", "Party")',
data: {
date: new Date($("#myDiv").datepicker("getDate").toString("yyyy/MM/dd")),
userID: userID
},
success: function(data) {
freeDate = eval(data);
},
error: function(request, status, error) {}
});
$("#myDiv").datepicker("setDate", $("#myDiv").datepicker("getDate").toString("yyyy/MM/dd"));
});
【问题讨论】:
-
上面的代码正确吗?
onSelect函数的右大括号被注释掉。此外,您将 data 提供给$.ajax,但未将 type 指定为POST,因此 jQuery 始终执行GET请求。 -
根据我在答案 cmets 中的理解,您有一个
<select>,日期为<option>元素。选择 date 需要显示已设置月份的 datepicker 小部件。如果您为<select>和 datepicker<div>提供 HTML 并提供 1 或 2 个示例,说明您希望 datepicker 在<select>中的给定日期显示什么日期,这将有助于理解。
标签: jquery ajax jquery-ui date jquery-ui-datepicker