2013-03-03 7 views
5

Ho un input in cui voglio modificare una data. Quando cambia il valore dell'ingresso, voglio eseguire un callback.bootstrap-datepicker non selezionare l'evento di modifica sull'input

Se chiamo la funzione datepicker (da bootstrap-datepicker https://github.com/eternicode/bootstrap-datepicker) non posso più collegarmi all'evento di modifica. (Strano abbastanza, altri eventi sembrano funzionare bene)

Questo è quello che ho provato finora:

(usando backbone)

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

o utilizzando direttamente jQuery

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

Se Ho solo commentare la riga seguente

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

L'evento è chiamato.

D'altra parte, il comando changeDate evet viene chiamato, ma solo quando la data viene modificata utilizzando il mouse o le frecce. Voglio prendere l'evento quando l'utente digita semplicemente una data diversa.

Ho provato a dare un'occhiata alla fonte (https://github.com/eternicode/bootstrap-datepicker/blob/master/js/bootstrap-datepicker.js) ma non sono riuscito a trovare dove potrebbe essere "ingoiare" l'evento di modifica.

risposta

7

Questo non è un metodo consigliato, ma una soluzione sporca. Continua a controllare il campo della data dopo 500 millisecondi (o secondo i tuoi requisiti).

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(); 

UPDATE

Se si utilizza la seguente libreria allora sarà generare un evento 'CHANGEDATE' quando viene cambiata la data.Aspetto grafico è molto simile al datepicker eternicode

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

Esempio di utilizzo:

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

È possibile attivare l'evento 'changeDate' dopo aver modificato il valore di input tramite codice? –

0

Nel mio caso è stato sufficiente per fare due semplici passaggi:

  1. Aggiungi cambiamento ascoltatore di eventi da inserire (catturerà l'evento quando l'utente digita una data diversa)

    $('#dateInput').on(change, doSomethingOnChange); 
    
  2. Aggiungi datepicker evento CHANGEDATE (si innescherà evento di modifica dal primo passo, quando la data viene modificata utilizzando il mouse o le frecce)

    input.datepicker().on('changeDate', function(){ 
        $(this).trigger('change'); 
    }); 
    
Problemi correlati