我遇到了jQuery和UI日期选择器的问题。
基本上我有3个字段在我的新事件形式:日期, timeFrom, timeTo在我的SQL数据库中有3个字段:Date(datetime), timeFrom(time), timeTo(time)
日期字段,是用日期选择器选择的,提交看起来像这样:3/19/13timeFrom和timeTo将被时间选择器插件选中,看起来像这样:06:20 am AND 07:20 am
在我的SQL数据库中,提交的数据看起来像这样:2013-03-19, 06:20:00.0, 07:20:00.0现在这一切都很好,直到我去编辑同一个事件。当我从数据库调用它并再次填充输入时,它们最终看起来像这样:
日期:{ts '2013-03-19 00:00:00'}
timeFrom: 1970-01-01 06:20:00.0
timeTo: 1970-01-01 07:20:00.0
因此,这意味着日期选择器和时间选择器都不能识别这些值。如果你只是再次提交表单,而不是重置日期,我的代码抛出一个错误。
所以我认为我需要使用jquery来修改页面加载时的输入字段,使其格式正确,并显示如下:
$(function() {
//datefix
var thisdatevalue = $("input[name='event[eventdate]']").val();
var day1 = $("input[name='event[eventdate]']").val().getDate();
var month1 = $("input[name='event[eventdate]']").val().getMonth();
var year1 = $("input[name='event[eventdate]']").val().getFullYear();
var fullDate = day1 + "/" + month1 + "/" + year1;
$("input[name='event[eventdate]']").val(fullDate);
//timefix
var thistimefromvalue = $("input[name='event[timefrom]']").val();
var hour1 = $("input[name='event[timefrom]']").val().getHours();
var minute1 = $("input[name='event[timefrom]']").val().getMinutes();
var second1 = $("input[name='event[timefrom]']").val().getSeconds();
var fullTime = hour1 + ":" + minute1 + ":" + second1;
$("input[name='event[timefrom]']").val(fullTime) ;
//timefix
var thistimetovalue = $("input[name='event[timeto]']").val();
var hour2 = $("input[name='event[timeto]']").val().getHours();
var minute2 = $("input[name='event[timeto]']").val().getMinutes();
var second2 = $("input[name='event[timeto]']").val().getSeconds();
var fullTime = hour2 + ":" + minute2 + ":" + second2;
$("input[name='event[timeto]']").val(fullTime) ;
});
但是,上面的代码抛出TypeError: $(…).val(…)。getDay不是一个函数,也不是一个函数。
我认为这是一个标准的javascript函数,应该为我做的伎俩。
有什么好主意吗?
谢谢!
getDay()
函数,因为所有其他同类函数只适用于Date对象。使用以下语法创建Date对象,然后调用所需的方法。
dt = new Date('2013-03-27 15:22:33');
result = dt.getFullYear()+'/'+(dt.getUTCMonth()+1)+'/'+dt.getDate()+' '+dt.getUTCHours()+':'+dt.getUTCMinutes()+':'+dt.getUTCSeconds();
下面是jsFiddle