0

好的,我遇到了 jQuery 和 UI 日期选择器的问题。

本质上,我的新事件表单中有 3 个字段:DatetimeFromtimeTo 我的 SQL 数据库中有 3 个字段:Date(datetime)、timeFrom(time)、timeTo(time)

日期字段,使用 datepicker 选择,提交看起来像这样:3/19/13 timeFrom 和 timeTo 将使用 timepicker 插件选择,看起来像这样:06:20 am AND 07:20 am

在我的 SQL 数据库中,提交的数据如下所示:2013-03-1906:20:00.007:20:00.0

现在这一切都很好,直到我去编辑同一个事件。当我从数据库中调用它并再次填充我的输入时,它们最终看起来像这样:

日期:{ts'2013-03-19 00:00:00'}

时间从:1970-01-01 06:20:00.0

时间到: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 is not a function is not a function。

我认为这是一个标准的 javascript 函数,应该可以为我解决问题。

关于我如何做到这一点的任何想法?

谢谢!

4

1 回答 1

1

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 上的工作示例

于 2013-03-27T21:49:42.687 回答