2010-02-11 47 views
8

Tôi đang cố gắng xử lý cùng một sự kiện onSelect trên đối tượng jquery datePicker hai lần. Từ những gì tôi hiểu sự kiện có thể được xử lý nhiều lần, nhưng khi tôi thử điều này chỉ có một trong những xử lý sự kiện bị sa thải. Dường như nó sẽ kích hoạt trình xử lý thứ hai, nhưng không phải là lần đầu tiên. Làm thế nào tôi có thể xử lý cùng một sự kiện onSelect hai lần mà không ghi đè lên sự kiện đầu tiên? Đây là đoạn mã vấn đề.jquery datepicker onselect bộ xử lý sự kiện nhiều lần

$(document).ready(function(){ 
    $('.test').datepicker(); 
    ... 
    $('.test').datepicker('option', 'onSelect', function(dateText, inst) { alert('one'); }); 
} 

... 

$(document).ready(function(){ 
    $('.test').datepicker('option', 'onSelect', function(dateText, inst) { alert('two'); }); 
} 

Trả lời

11

Mã bạn đang sử dụng chỉ thay thế trình xử lý Bật đầu tiên trên màn hình thứ hai. Nếu bạn muốn thực hiện hai điều, thì trước tiên bạn sẽ cần có trình xử lý onSelect hiện có rồi gọi nó từ bên trong trình xử lý mà bạn đang thay thế nó bằng.

$(function() { 
    $('.test').datepicker(); 
    $('.test').datepicker('option', 'onSelect', function(dateText,inst) { alert('one'); }); 
    var prevHandler = $('.test').datepicker('option','onSelect'); 
    $('.test').datepicker('option', 'onSelect', function(dateText,inst) { prevHandler(dateText,inst); alert('two'); }); 
}); 
+0

Tuyệt vời! Đó chính xác là những gì tôi đang tìm kiếm, cảm ơn sự giúp đỡ của bạn! – Noel

+0

Thực sự! Một câu trả lời hay. – Arjmand

+0

Không phải là một chút lãng phí khi làm '$ ('. Test')' 4 lần? Nếu không, một câu trả lời rất hữu ích – freefaller

Các vấn đề liên quan