1

現在、このコードは機能していますが、期待どおりではありません。

$("#start_date").datepicker({
        dateFormat: 'yy-mm-dd',
        onSelect: function(_date, _datepicker)
        {
            var myDate = new Date(_date);
            myDate.setDate(myDate.getDate()+8);
            $('#estimated_hatching_date').text(myDate);
            alert( myDate);       
        }

        });

最初の問題は、日付がどのように表示されるかです。現在、上記のコードは2010年10月1日金曜日17:00:00 GMT-0700(太平洋夏時間)に警告します。たとえば、2010年9月6日のように、出力を日付だけにします。

2番目の問題は、$('#estimated_hatching_date')。text(myDate);です。テキストは変更されません。そのコードが実行されても、何も変更されません。ただし、次の場合:$('#estimated_hatching_date')。text('myDate'); myDateは#estimated_hatching_datedivに配置されます。

では、日付を出力して、#estimated_hatching_date div内の「テキスト」を、日付が選択されてから+7日だけの日付に置き換えるにはどうすればよいですか?

ありがとう、リッチ

4

3 に答える 3

3

jQuery UI Datepickerには、formatDate関数が組み込まれています。@dottedquadをお願いします。自分で作成したバージョンは使用しないでください。日付の計算と書式設定は、想像以上に困難です。コーナーケースで髪を引き裂きます。

onSelect: function(_date, _datepicker) {
    var myDate = new Date(_date);
    var myText = $.datepicker.formatDate('dd-mm-yy',myDate);
    alert(myText);
}
于 2010-11-17T23:06:26.693 に答える
1

ui datepickerのマニュアルをもう一度読んで、理解しました。

    $("#start_date").datepicker({
    dateFormat: 'yy-mm-dd',
    onSelect: function(_date, _datepicker)
    {
        var myDate = new Date(_date);
        myDate.setDate(myDate.getDate()+8);
        var fullYear = myDate.getFullYear();
        var month = ((myDate.getMonth()+1) < 10) ? ('0' + (myDate.getMonth()+1)) : myDate.getMonth()+1;
        var day = (myDate.getDate() < 10) ? ('0' + myDate.getDate()) : myDate.getDate();
        var myNewDate = fullYear + '-' + day + '-' + month;

        $('#estimated_hatching_date').text(myNewDate);
        alert(myNewDate);
    }
    });

そのコードは期待どおりに機能します。他の誰かがその仕事を違ったやり方で成し遂げるであろう他のアイデアを持っていますか?

-ありがとう、リッチ

于 2010-09-07T23:11:24.827 に答える
1

同じ問題が発生し、入力を非表示にして「altField」オプションを使用しました。非表示の入力値は常に「dateFormat」に従ってフォーマットされます

于 2010-09-30T11:34:37.103 に答える