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-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 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 に答える