Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect change to selected date with bootstrap-datepicker

I have an input element with an attached datepicker created using 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> 

When the user changes the date by typing directly into the input element, I can get the value with the input element's onChange event, as shown above. But when the user changes the date from datepicker (i.e. by clicking a date on the calendar), the onChange handler is not called.

How can I detect changes to the selected date that are made via the datepicker, rather than by typing into the input element?

like image 984
user2269756 Avatar asked Jun 09 '13 11:06

user2269756


People also ask

How do I highlight a specific date in datepicker?

Define beforeShowDay within datepicker() method. In the function create a new date format according to the defined format (dd-mm-yyyy) in an Array. Check for the date in the Array with $. inArray() method if it is available then return [true, "highlight", tooltip_text]; otherwise return [true] .

How can use datepicker in bootstrap?

As with bootstrap's own plugins, datepicker provides a data-api that can be used to instantiate datepickers without the need for custom javascript. For most datepickers, simply set data-provide="datepicker" on the element you want to initialize, and it will be intialized lazily, in true bootstrap fashion.


2 Answers

All others answers are related to jQuery UI datepicker, but the question is about bootstrap-datepicker.

You can use the on changeDate event to trigger a change event on the related input, and then handle both ways of changing the date from the onChange handler:

changeDate

Fired when the date is changed.

Example:

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

Here is a working fiddle: http://jsfiddle.net/IrvinDominin/frjhgpn8/

like image 89
Irvin Dominin Avatar answered Sep 22 '22 23:09

Irvin Dominin


Try this:

$("#dp3").on("dp.change", function(e) {     alert('hey'); }); 
like image 42
Petr Avatar answered Sep 20 '22 23:09

Petr