2012-10-04 41 views
2

我創建了一些使用jQuery datepicker的自定義日期選擇器,它的工作原理非常完美。當我需要onSelect事件的某些功能時,有一些場景需要覆蓋它。但我不需要從最初的datepicker改變任何其他設置。jQuery datepicker函數覆蓋

這裏是我的代碼示例:

$('#start_date.datepicker, #end_date.datepicker').attachCustomDatepicker(); 

$('#start_date.datepicker').datepicker({ 
     onSelect: function(dateValue, inst) { 
      $('#end_date.datepicker').datepicker("option", "minDate", dateValue); 
     } 
}); 
+0

如果我的理解,你只需要使用特定的'datepickers'的具體行爲,而不是所有的他們? –

+0

是的,這是正確的 – dzona

回答

1

因爲這是不可能的,我想出來的解決方法: 將通過功能參數去定製jQuery函數。這是創建datepickers代碼:

var onSelectFunction = function(dateValue){ 
     $('#end_date.datepicker').datepicker("option", "minDate", dateValue); 
    } 
    options.onSelect = onSelectFunction; 
    $('#start_date.datepicker, #end_date.datepicker').attachCustomDatepicker(options); 

,這是我的自定義功能的預覽:

$.fn.attachCustomDatepicker = function(options) { 

    var defaultOptions = { 
     someDefaultCustomParamsHere: , 
     onSelect: null 
    } 

    var onSelectFunction = function(params){ return false; } 

    if (typeof options == 'object') { 
      options = $.extend(defaultOptions, options); 
    } else { 
      options = defaultOptions; 
    } 

    if(!options.onSelect){ 
     options.onSelect = onSelectFunction; 
    } 

    $(this).datepicker("destroy"); 

    $(this).datepicker({ 
     onSelect: function (dateValue, inst) { 
      options.onSelect(dateValue); 
     } 
    } 
}