Vous pouvez utiliser la fonction onSelect
événement .
$(".date").datepicker({
onSelect: function(dateText) {
console.log("Selected date: " + dateText + "; input's current value: " + this.value);
}
});
Exemple concret :
$(".date")
.datepicker({
onSelect: function(dateText) {
console.log("Selected date: " + dateText + "; input's current value: " + this.value);
}
})
.on("change", function() {
console.log("Got change event from field");
});
<link href="https://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<input type='text' class='date'>
<script src="https://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
Malheureusement, onSelect
se déclenche chaque fois qu'une date est sélectionnée, même si elle n'a pas changé. Il s'agit d'un défaut de conception du sélecteur de date : il se déclenche toujours onSelect
(même si rien n'a changé), et ne déclenche un événement sur l'entrée sous-jacente en cas de changement. (Si vous regardez le code de cet exemple, nous écoutons les changements, mais ils ne sont pas déclenchés). Il devrait probablement déclencher un événement sur l'entrée lorsque les choses changent (peut-être l'événement habituel change
ou éventuellement un événement spécifique au datepicker).
Si vous le souhaitez, vous pouvez bien sûr faire le change
sur l'événement input
le feu :
$(".date").datepicker({
onSelect: function() {
$(this).change();
}
});
Cela déclenchera change
sur le sous-jacent input
pour tout gestionnaire connecté via jQuery. Mais encore une fois, il toujours l'enflamme. Si vous souhaitez ne déclencher l'action qu'en cas de changement réel, vous devrez sauvegarder la valeur précédente (éventuellement par l'intermédiaire de la fonction data
) et de les comparer.
Exemple concret :
$(".date")
.datepicker({
onSelect: function(dateText) {
console.log("Selected date: " + dateText + "; input's current value: " + this.value);
$(this).change();
}
})
.on("change", function() {
console.log("Got change event from field");
});
<link href="https://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<input type='text' class='date'>
<script src="https://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
0 votes
J'ai fini par utiliser stackoverflow.com/a/30132949/293792 car cela semble répondre directement à la question