4

backend からのデータに応じて、月の何日かを強調しています。月または年を変更すると、再び ajax call を呼び出します。しかし、datepicker は以前の日付のみを表示します。私のコードは次のとおりです。

$("input.dC").live('click',function() {
$(this).datepicker({
showOn:'focus',
changeMonth:'true',
changeYear:'true',
onChangeMonthYear:function(year,month,inst) {
                    var date = new Date(year,month-1);
                    obj.suggestDates(date);
                    $("#"+inst.id).datepicker("refresh");
},
beforeShowDay:function(date){
                for(i=0;i<obj.r.length;i++) {
                  var m = obj.r[i];
                  if(date.getMonth() == m[1] && date.getDate() == m[0] && date.getFullYear() == m[2]) { return[true,"ui-state-highlight"];}
                }
                return[false,""];
}
}).focus();
});


obj.prototype.suggestDates=function(d){
//ajax call here 
//obj.r=response;
}
4

3 に答える 3

0

たぶん、このリンクが役に立ちます: https://github.com/jtsage/jquery-mobile-datebox/issues/231

そうでない場合は、イベント ハンドラの外側でリフレッシュ メソッドを作成し、それを内側で呼び出そうとしましたか?

そんな感じ:

// I everytime build first a getter für my jQuery-Element. So you can change your selector with changing only one method
var getDatebox = function() {
    return jQuery('input.dC');
};
var refreshDatebox = function() {
    getDatebox().datebox('refresh');
};

getDatebox().on('click', function() { // don't use 'live', it's deprecated
    jQuery(this).datepicker({
        [...]
        onChangeMonthYear: function(year, month) {
            var date = new Date(year, month-1);
            obj.suggestDates(date);
            refreshDatebox(); // call new function
        },
        [...]
    });
});
于 2012-12-13T10:21:54.603 に答える