我有一个使用jQuery UI datepicker的页面。我试图在我的页面上发生以下情况:
这不完全是验证,因为意图是显示警告但仍然允许用户提交他们想要的任何一天。
到目前为止,我发现了ajax,但错误的日期。我认为它是在页面加载时抓取日期而不是在点击日历日时,所以我猜测datepicker('getDate')
正在加载时进行评估。如何构建它以动态评估?这是当前版本(在coffeescript中):
jQuery ->
$("#rescheduler").click ->
$("td[data-handler='selectDay'] a").click ->
id = getUrlVars()["booking_id"]
newDate = new Date(datepicker.datepicker('getDate'))
postData = {}
postData['booking_id'] = id
postData['date'] = newDate
$.post '/path/to/check_stuff', postData, ((data) -> doStuff), "json"
或者,如果您更喜欢原生的javaScript:
jQuery(function() {
return $("#rescheduler").click(function() {
return $("td[data-handler='selectDay'] a").click(function() {
var id, newDate, postData;
id = getUrlVars()["booking_id"];
newDate = new Date(datepicker.datepicker('getDate'));
postData = {};
postData['booking_id'] = id;
postData['date'] = newDate;
return $.post('/path/to/check_stuff', postData, (function(data) {
return doStuff;
}), "json");
});
});
});
答案 0 :(得分:0)
我怀疑发生的事情是日期选择器将日期设置为2014年3月2日,但这被设置为UTC时间,因此值类似于2014年3月2日00:00:00。然后,当您从传入的值创建新日期时,您的时区会添加到混合中,从而导致日期显示为关闭。
如果是这样(尝试记录某些值以查看您正在使用的内容),那么您需要修改日期选择器值以考虑时区。
类似的东西:
localDate = new Date(dateToFix); //dateToFix would be the value from the date picker
localTime = localDate.getTime();
localOffset = localDate.getTimezoneOffset() * 60000;
adjustedDate = new Date(localTime + localOffset);