Как я могу извлечь дату и время из метки времени внутри поля ввода с помощью jQuery?

Хорошо, у меня возникла проблема с выбором даты jQuery и пользовательского интерфейса.

По сути, у меня есть 3 поля в моей НОВОЙ форме события: Date, timeFrom, timeTo и 3 поля в моей базе данных SQL: Date(datetime), timeFrom(время), timeTo(время)

Поле даты выбирается с помощью средства выбора даты и будет выглядеть примерно так: 19.03.13 timeFrom и timeTo будут выбраны с помощью плагина для выбора времени и будут выглядеть примерно так: 06:20 И 07:20.

В моей базе данных SQL отправленные данные будут выглядеть так: 2013-03-19, 06:20:00.0, 07:20:00.0

Теперь с этим все в порядке, пока я не пойду редактировать это самое событие. Когда я вызываю его из базы данных и снова заполняю свои входные данные, они в конечном итоге выглядят так:

Дата: {тс '2013-03-19 00:00:00'}

времяОт: 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, которая должна помочь мне.

Любые идеи о том, как я могу это сделать?

Спасибо!


person Amir    schedule 27.03.2013    source источник
comment
Метод .val() будет возвращать только строковое значение поля ввода, а не объект даты. Таким образом, методы даты, которые вы связываете с ними, не определены.   -  person Ruben Infante    schedule 28.03.2013
comment
Ах, похоже, это была моя проблема! Благодарю вас!   -  person Amir    schedule 28.03.2013


Ответы (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

person Denis O.    schedule 27.03.2013