50

У меня есть элемент ввода с прикрепленным фидером, созданным с использованием bootstrap-datepicker.Обнаружить изменение на выбранную дату с помощью bootstrap-datepicker

<div class="well"> 
    <div class="input-append date" id="dp3" data-date="2012-01-02" data-date-format="yyyy-mm-dd"> 
     <input type="text" id="date-daily"> 
     <span class="add-on"><i class="icon-th"></i></span>  
    </div> 
</div> 

<script language="JavaScript" type="text/javascript"> 
    $(document).ready(function() { 
     $('#dp3').datepicker(); 
     $('#date-daily').val('0000-00-00'); 
     $('#date-daily').change(function() { 
      console.log($('#date-daily').val()); 
     }); 
    }); 
</script> 

Когда пользователь изменяет дату, введя непосредственно в элемент ввода, можно получить значение с помощью события OnChange элемента ввода, как показано выше. Но когда пользователь меняет дату с datepicker (т. Е. Нажав на дату в календаре), обработчик onChange не вызывается.

Как я могу обнаружить изменения на выбранную дату, которые сделаны с помощью datepicker, а не путем ввода ввода в элемент ввода?

ответ

91

Все остальные ответы, связанные с jQuery UI datepicker, но вопрос о bootstrap-datepicker.

Вы можете использовать на changeDate событие, чтобы вызвать событие изменения на соответствующий вход, а затем обрабатывать оба способа изменения даты от onChange обработчика:

ChangeDate

Уволен когда дата изменяется.

Пример:

$('#dp3').datepicker().on('changeDate', function (ev) { 
    $('#date-daily').change(); 
}); 
$('#date-daily').val('0000-00-00'); 
$('#date-daily').change(function() { 
    console.log($('#date-daily').val()); 
}); 

Вот рабочая скрипку: http://jsfiddle.net/IrvinDominin/frjhgpn8/

+0

Также есть событие 'clearDate', которое вы должны прослушать, если ваша дата имеет значение NULL. Однако это событие, похоже, не срабатывает при очистке контекстного меню (в Chrome). –

+0

Возможно ли запустить событие после изменения входного значения через код? –

+0

Скрипка больше не работает из-за внешних ресурсов. Обновленная версия здесь: http://jsfiddle.net/jsrq4ot0/2/ – Roberto

-15

Вы можете использовать onSelect событие

$("#date-daily").datepicker({ 
    onSelect: function(dateText) { 
    alert($('#dp3').val()); 
    } 
}); 

Вызывается при выборе DatePicker. Функция принимает выбранную дату как текст и экземпляр datepicker в качестве параметров. это относится к соответствующему полю ввода.

SEE HERE

+2

Ты ответ описывается, как решить эту проблему в Jquery DatePicker, однако ОП спрашивали о самозагрузке-DatePicker, который является другим компонентом (хотя предназначен для та же цель). Другими словами, вы отвечаете неправильно. – jahu

+0

это неправильная датапикер, ответ правильный. –

+0

это неправильный плагин ... – alias51

28

Попробуйте это:

$("#dp3").on("dp.change", function(e) { 
    alert('hey'); 
}); 
+0

Вот как это должно быть сделано из документации. Кроме того, чтобы сэкономить время - e хранит свойства, такие как e ["date"] и e ["oldDate"] –

+0

Вопрос о bootstrap-datepicker, а не bootstrap-datetimepicker –

6

Вот мой код, который:

$('#date-daily').datepicker().on('changeDate', function(e) { 
    //$('#other-input').val(e.format(0,"dd/mm/yyyy")); 
    //alert(e.date); 
    //alert(e.format(0,"dd/mm/yyyy")); 
    //console.log(e.date); 
}); 

Просто раскомментируйте тот, который вы предпочитаете. Первый вариант изменяет значение другого входного элемента. Второй предупреждает дату с датой datepicker по умолчанию. Третий предупреждает дату с вашим собственным пользовательским форматом. Последняя опция выводит в журнал (дата даты по умолчанию).

Это ваш выбор для использования e.date, e.dates (для ввода нескольких данных) или e.format (...).

здесь some more info

12

$(function() { 
 
    $('input[name="datetimepicker"]').datetimepicker({ 
 
    defaultDate: new Date() 
 
    }).on('dp.change',function(event){ 
 
    $('#newDateSpan').html("New Date: " + event.date.format('lll')); 
 
    $('#oldDateSpan').html("Old Date: " + event.oldDate.format('lll')); 
 
    }); 
 
    
 
});
<link href="http://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/build/css/bootstrap-datetimepicker.css" rel="stylesheet"/> 
 
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"/> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://momentjs.com/downloads/moment.min.js"></script> 
 
<script src="http://getbootstrap.com/dist/js/bootstrap.min.js"></script> 
 
<script src="http://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/src/js/bootstrap-datetimepicker.js"></script> 
 

 
<div class="container"> 
 
    <div class="col-xs-12"> 
 
    <input name="datetimepicker" /> 
 
    <p><span id="newDateSpan"></span><br><span id="oldDateSpan"></span></p> 
 
    </div> 
 
</div>

+1

Пожалуйста, сделайте больше информации. Только код и «попробуйте» ответы [обескуражены] (// meta.stackexchange.com/questions/196187), потому что они не содержат содержимого, доступного для поиска, и не объясняют, почему кто-то должен «попробовать это». Мы прилагаем усилия, чтобы стать источником знаний. – Mogsdad

Смежные вопросы