2013-03-03 30 views
5

Tôi có đầu vào mà tôi muốn chỉnh sửa ngày. Khi giá trị của đầu vào thay đổi, tôi muốn thực hiện một cuộc gọi lại.bootstrap-datepicker không chọn sự kiện thay đổi trên đầu vào

Nếu tôi gọi hàm datepicker (từ bootstrap-datepicker https://github.com/eternicode/bootstrap-datepicker) Tôi không còn có thể móc vào sự kiện thay đổi. (Strange đủ, các sự kiện khác dường như làm việc ok)

Đây là những gì tôi đã cố gắng cho đến nay:

(sử dụng xương sống)

events: { 
    'changeDate :input' : 'onUpdateField' 
}, 

hoặc sử dụng trực tiếp jquery

$('#Fundacion').on('change', this.onUpdateField); 

Nếu Tôi chỉ cần nhận xét dòng sau

$('#Fundacion').datepicker({ 
    autoclose : true, 
[...] 

Sự kiện này được gọi.

Mặt khác, lệnh evet changeDate được gọi, nhưng chỉ khi ngày được thay đổi bằng chuột hoặc mũi tên. Tôi muốn nắm bắt sự kiện khi người dùng chỉ nhập một ngày khác.

Tôi đã thử xem mã nguồn (https://github.com/eternicode/bootstrap-datepicker/blob/master/js/bootstrap-datepicker.js) nhưng tôi không thể tìm thấy nơi nó có thể là "nuốt" sự kiện thay đổi.

Trả lời

7

Đây không phải là một cách khuyến khích, nhưng một workaround bẩn. Chỉ cần tiếp tục kiểm tra trường ngày sau 500 mili giây (hoặc theo yêu cầu của bạn).

var current = $('.transaction-date').val(); 
function keep_checking() { 

    if (current != $('.transaction-date').val()) { 
     alert('change happened'); 
     current = $('.transaction-date').val(); 
    } 
    setTimeout(keep_checking, 500); 
} 
keep_checking(); 

CẬP NHẬT

Nếu bạn sử dụng thư viện này thì nó sẽ bắn một sự kiện 'CHANGEDATE' khi ngày được thay đổi.Nhìn và cảm giác rất giống với datepicker eternicode

http://www.eyecon.ro/bootstrap-datepicker/

sử dụng Ví dụ:

jQuery('#dp1').datepicker().on('changeDate', function(ev){ 
    alert('date is changed'); 
}); 
+0

Có thể kích hoạt sự kiện 'changeDate' sau khi thay đổi giá trị đầu vào thông qua mã không? –

0

Trong trường hợp của tôi nó là đủ để thực hiện hai bước đơn giản:

  1. Thêm sự thay đổi trình xử lý sự kiện để nhập (nó sẽ bắt sự kiện khi người dùng nhập một ngày khác)

    $('#dateInput').on(change, doSomethingOnChange); 
    
  2. Thêm datepicker kiện CHANGEDATE (nó sẽ kích hoạt sự kiện thay đổi từ bước đầu tiên khi ngày được thay đổi bằng cách sử dụng chuột hoặc mũi tên)

    input.datepicker().on('changeDate', function(){ 
        $(this).trigger('change'); 
    }); 
    
Các vấn đề liên quan