<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>
Alors, voici à quoi ressemble mon datpicker. Donc, en gros, lorsque je change de date en cliquant sur la souris, cela fonctionne bien. Toutefois, lorsque je change manuellement la date avec le clavier ou que je l'efface 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?
Vous devez utiliser l'événement change
sur l'entrée elle-même si vous souhaitez répondre à une entrée manuelle, car l'événement changeDate
ne s'applique que lorsque la date est modifiée à l'aide du sélecteur de date.
Essayez quelque chose comme ça:
$(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é en change.dp, donc changé n'a pas fonctionné pour moi.
$("#datetimepicker").datetimepicker().on('change.dp', function (e) {
FillDate(new Date());
});
également nécessaire de 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 date fonctionne également en majuscule, comme ceci: data-format = 'MM-DD-YYYY'
ça pourrait être utile pour quelqu'un, ça m'a vraiment donné du mal :)
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);
});
Essaye ça:
$(".datepicker").on("dp.change", function(e) {
alert('hey');
});
J'ai trouvé une solution courte pour cela . Aucun code supplémentaire n'est nécessaire, il suffit de déclencher l'événement changeDate E.g .$('.datepicker').datepicker().trigger('changeDate');
Cela devrait le faire fonctionner dans les deux cas
function onDateChange() {
// Do something here
}
$('#dpd1').bind('changeDate', onDateChange);
$('#dpd1').bind('input', onDateChange);
Code: https://github.com/uxsolutions/bootstrap-datepicker
(Docs: https://bootstrap-datepicker.readthedocs.io/en/latest/ )
Voici un rapport de bogue:
https://github.com/uxsolutions/bootstrap-datepicker/issues/1957
Si quelqu'un a une solution/solution de contournement pour celle-ci, ce serait bien si vous l'incluiez.
J'ai cette version de datetimepicker https://tempusdominus.github.io/bootstrap-4/ et pour une raison quelconque, l'événement de modification ne fonctionne pas avec jquery, mais avec JS Vanilla, il fonctionne
Je découvre comme ça
document.getElementById('date').onchange = function(){ ...the jquery code...}
J'espère travailler pour toi