L'événement de date de changement de date de démarrage bootstrap ne se déclenche pas lors de l'édition manuelle des dates ou de la date de clôture

<script type="text/javascript"> // When the document is ready $(document).ready(function () { $('.datepicker').datepicker({ format: "yyyy-mm-dd", }).on('changeDate', function(ev){ // do what you want here $(this).datepicker('hide'); }).on('changeDate', function(ev){ if ($('#startdate').val() != '' && $('#enddate').val() != ''){ $('#period').text(diffInDays() + ' d.'); } else { $('#period').text("-"); } }); </script> 

Voici donc ce que ressemble à mon datepicker. Donc, fondamentalement, lorsque je change de date en cliquant sur la souris, cela fonctionne bien, mais quand je change manuellement la date avec le clavier ou nettoie manuellement, l'événement de date de changement de date n'est pas appelé. Est-ce un bug ou est-ce que je fais quelque chose de mal ici?

    Je suppose que vous devez utiliser l'événement de change sur l'entrée elle-même si vous souhaitez répondre à l'entrée manuelle, car l'événement changeDate est uniquement pour la date à laquelle la date est modifiée à l'aide de la datepicker.

    Essayez quelque chose comme ceci:

     $(document).ready(function() { $('.datepicker').datepicker({ format: "yyyy-mm-dd", }) //Listen for the change even on the input .change(dateChanged) .on('changeDate', dateChanged); }); function dateChanged(ev) { $(this).datepicker('hide'); if ($('#startdate').val() != '' && $('#enddate').val() != '') { $('#period').text(diffInDays() + ' d.'); } else { $('#period').text("-"); } } 

    Dans la version 2.1.5

    ChangeDate a été renommé pour changer.dp ainsi changé ne fonctionnait pas pour moi

     $("#datetimepicker").datetimepicker().on('change.dp', function (e) { FillDate(new Date()); }); 

    Également nécessaire pour changer la classe css de datepicker à datepicker-input

     <div id='datetimepicker' class='datepicker-input input-group controls'> <input id='txtStartDate' class='form-control' placeholder='Select datepicker' data-rule-required='true' data-format='MM-DD-YYYY' type='text' /> <span class='input-group-addon'> <span class='icon-calendar' data-time-icon='icon-time' data-date-icon='icon-calendar'></span> </span> </div> 

    Le format de la date fonctionne également dans les caractères en majuscules comme ce format de données = 'MM-DD-AAAA'

    Il pourrait être utile pour quelqu'un que cela m'a donné du temps vraiment difficile 🙂

    Essaye ça:

     $(".datepicker").on("dp.change", function(e) { alert('hey'); }); 

    Cela devrait fonctionner dans les deux cas

     function onDateChange() { // Do something here } $('#dpd1').bind('changeDate', onDateChange); $('#dpd1').bind('input', onDateChange); 

    La nouvelle version a changé … pour la dernière version, utilisez le code ci-dessous:

     $('#UpToDate').datetimepicker({ format:'MMMM DD, YYYY', maxDate:moment(), defaultDate:moment() }).on('dp.change',function(e){ console.log(e); });