1

この日付ピッカー イベントを見つけましたが、IE では動作しません。このコードの何が問題なのかわかりません。

var Event = function(text, className) {
        this.text = text;
        this.className = className;
    };


var events = {};
events[new Date("18/Jan/2013")] = new Event("Drinks @ Seymours - Alumni Event", "Yes");
events[new Date("16/Jan/2013")] = new Event("Retired Staff Luncheon", "Yes");
events[new Date("13/Jan2013")] = new Event("October Spring Lunch - Alumni Event", "Yes");


$("#dates").datepicker({
    dateFormat: 'dd/M/yy',  
    firstDay: 1,
    showOtherMonths: true,
    onSelect: function(date) {
        $('#CAT_Custom_241423').val(date);
        $('#submit-btn-webapp').trigger('click');
    },
    beforeShowDay: addClass 
});

function addClass(date) { 
    var event=events[date];
    if(event){
        return[true,event.className,event.text];
    }
    else {
        return[true,'',''];
    }
}

ff、Google Chrome では問題なく動作しています。これがjsfiddleの作業コードです

http://jsfiddle.net/7U56z/

4

1 に答える 1

0

問題は、イベント キー (生成された日付) です。IE で次のことを試した場合:

 alert(new Date("18/Jan/2013"));

エラー (無効な日付) が表示されます。したがって、関数で一致することはありません。次のように (またはこれに類似した) キーを定義します。

 events[(new Date(2013, 0, 18, 0, 0, 0))] = new Event(....)
 // format in this case is:
 // new Date(year,month,day,hour,minute,second)
 // month starts with 0.

そしてそれは動作します。この場合、時、分、秒を設定する必要はありません。生成されたキーが有効な日付であり、datepicker からの日付と一致していることを確認する必要があります。

ちなみに、少し紛らわしいwindow.eventが既にあるため、「イベント」オブジェクトの名前を別のものに変更します。

于 2013-01-27T13:52:47.020 に答える