2016-11-01 4 views
0

Ich habe einen Bootstrap-Datepicker. Ich möchte, dass das Show-Ereignis ausgelöst wird, wenn das Eingabefeld zum ersten Mal angeklickt wird. Ich möchte jedoch nicht, dass das Ereignis ausgelöst wird, wenn der Benutzer die Monate mit den Pfeilen zurück und vorwärts durchläuft.verhindern Show-Ereignis von feuern, wenn auf Datepicker

Ist das möglich?

$('#sandbox-container input').datepicker({ 
    autoclose: true 
}); 

$('#sandbox-container input').on('show', function(e){ 
    console.log('show event'); 
}); 

Wenn Sie die Geige laufen die Meldung protokolliert werden, wenn Sie zuerst das Eingabefeld klicken (Ich möchte, dass das Verhalten). Sie sehen jedoch auch, dass diese Nachricht angezeigt wird, wenn Sie die Pfeile "Zurück" und "Weiter" verwenden.

JS Fiddler ist hier - http://jsfiddle.net/LcqM7/611/

Antwort

1

Sie überprüfen müssen, ob der show bereits "run" im aktuellen "Zustand".

$('#sandbox-container input') 
    .on('show', function(e){ 
     if (! $(this).data('showrun')) { 
      console.log('show event'); 
      $(this).data('showrun', true); 
     } 
    }) 
    .on('hide', function(e){ 
     $(this).data('showrun', false); 
    }) 
    .on('changeMonth', function(e){ 
     console.log('change month event'); 
    }); 

Und ein funktionierendes Beispiel:
http://jsfiddle.net/k6b3yepb/

+0

perfekt das ist genau das, was ich brauchte - Prost :) –

0

Es ist ein bisschen düster, aber sie können die hide Veranstaltung nutzen die show dann wieder anbringen mit jqueries one zu entbinden.

http://jsfiddle.net/5dhkumko/

$('#sandbox-container input').datepicker({ 
    autoclose: true 
}); 

$('#sandbox-container input').one('show', showMethod); 

$('#sandbox-container input').on('hide', function(e) { 
    $('#sandbox-container input').off('show', showMethod).one('show', showMethod); 
}); 

function showMethod() { 
    console.log('show event'); 
} 
Verwandte Themen