Вы можете использовать событие onSelect
DatePicker .
$(".date").datepicker({
onSelect: function(dateText) {
display("Selected date: " + dateText + "; input's current value: " + this.value);
}
});
Живой пример :
jQuery(function($) {
$(".date").datepicker({
onSelect: function(dateText) {
display("Selected date: " + dateText + "; input's current value: " + this.value);
}
}).on("change", function() {
display("Got change event from field");
});
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
<link href="http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<input type='text' class='date'>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
К сожалению, onSelect
срабатывает каждый раз, когда выбрана дата, даже если она не изменилась.Это недостаток дизайна в указателе даты: он всегда запускает onSelect
(даже если ничего не изменилось), а не запускает какое-либо событие на базовом входе при изменении.(Если вы посмотрите код этого примера, мы выслушиваем изменения, но они не вызываются.) Вероятно, он должен вызывать событие на входе при изменении ситуации (возможно, обычное событие change
или, возможно,специфический для средства выбора даты).
Если вы хотите, конечно, вы можете сделать событие change
на пожаре input
:
$(".date").datepicker({
onSelect: function() {
$(this).change();
}
});
, которое сработаетchange
на базовом input
для любого обработчика, подключенного через jQuery.Но опять же, он всегда запускает его.Если вы хотите активировать только реальные изменения, вам нужно сохранить предыдущее значение (возможно, через data
) и сравнить.
Живой пример :
jQuery(function($) {
$(".date").datepicker({
onSelect: function(dateText) {
display("Selected date: " + dateText + "; input's current value: " + this.value);
$(this).change();
}
}).on("change", function() {
display("Got change event from field");
});
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
<link href="http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<input type='text' class='date'>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>