2014-04-17 3 views
1

어떻게 jQuery Datepicker 'beforeShow'함수를 확장합니까?before jquery datepicker의 표시

나는 시도했다 :

(function ($) { 
    var old = $.fn.datepicker.beforeShow; 
    $.fn.datepicker.beforeShow = function() { 

     var ret = old.apply(this, arguments); 
     alert("Extended functionality of beforeShow function!"); 



     return ret; 
    }; 
})(jQuery); 

UPDATE :

내가 CSS 클래스를 확인 같은 모든 내 datepickers에 대한 몇 가지 추가 기능을 추가 할

; 좋은 방법은 각 위치에 해당 기능을 배치하는 대신 beforeShow 메서드의 기능을 확장하는 것입니다.

+0

유는 조금 더 clearify 수 ?? –

+0

@ShoaibChikate : 모든 내 datepickers에 대해 beforeShow 메서드에 로직을 추가하고 싶습니다. –

답변

2

jQuery UI datepicker를 사용하는 경우 $.datepicker.setDefaults() 메서드를 사용하십시오.

예컨대 :

$.datepicker.setDefaults({ 
    beforeShow: function() { 
     if($(this).hasClass('test')) { 
      alert('got ya'); 
     } 

    } 
}); 

DEMO

편집

귀하의 코멘트에 따르면 나는 날짜 선택기 요소에 클릭 이벤트 리스너를 위임 할 것입니다. 그렇지 않으면 항상 원래 속성 값을 덮어 씁니다.

$('.datepicker').on('click', function() { 
    if($(this).hasClass('test')) { 
     alert('got ya'); 
    } 
}); 

$('.datepicker').datepicker({ 
    beforeShow: function() { 
     //Still called? 
     console.log('test'); 
    } 
}); 

DEMO

+0

감사하지만이 요소는 beforeShow 메서드를 정의하지 않은 경우에만 호출됩니다. –

+0

[your example modified] (http : /jsfiddle.net/elsevero/vbLH3/2/) –

+1

@ el.severo 업데이트 된 답변보기. – enyce12