2013-08-29 132 views
1

我試圖從JQuery UI日期選擇器日曆中禁用某些日期。禁用jQuery日期選擇器中的自定義日期

我的問題是隻有disableDays函數檢查的最後日期被禁用,不是全部。爲什麼它僅禁用最後一次檢查日期。我應該從這個函數返回不同的響應嗎?

完整的腳本:

var disabled_days = new Array(); // Array of Date() objects 


$('.date-picker-day').live('click', function() { 
    $(this).datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     showButtonPanel: true, 
     dateFormat: 'dd', 
     beforeShow: function() { 
      [..] 
     }, 
     beforeShowDay: disableDays, 
     onClose: function (dateText, inst) { 

     } 

    }).focus(); 
}); 

function disableDays(date) { 
    var ret = false; 
    $.each(disabled_days, function (k, v) { 
     if (v.getDate() == date.getDate()) { 
      console.log(v + 'vs.' + date + ' invalid'); 
      ret = [false]; 
     } else { 
      ret = [true]; 
     } 
    }); 

    return ret; 
} 

回答

1

你需要儘快負找到匹配停止disabled_days陣列的進一步迭代,否則迭代中日的未來價值將不匹配,ret將再次得到true

function disableDays(date) { 
    var ret = false; 
    $.each(disabled_days, function (k, v) { 
     if (v.getDate() == date.getDate()) { 
      console.log(v + 'vs.' + date + ' invalid'); 
      ret = [false]; 
      return false; 
     } else { 
      ret = [true]; 
     } 
    }); 
    return ret; 
} 

演示:Fiddle

+0

非常感謝您!我很驚訝,我沒有在腦海裏編譯它。 –

相關問題