jQuery Datepicker onchange evento de evento

Tengo un código JS en el que cuando cambias un campo llama a una rutina de búsqueda. El problema es que no puedo encontrar ningún evento jQuery que se active cuando el Datepicker actualice el campo de entrada.

Por alguna razón, un evento de cambio no se llama cuando Datepicker actualiza el campo. Cuando aparece el calendario, cambia el foco, así que tampoco puedo usarlo. ¿Algunas ideas?

Puede usar el evento datepicker en onSelect .

 $(".date").datepicker({ onSelect: function(dateText) { display("Selected date: " + dateText + "; input's current value: " + this.value); } }); 

Ejemplo en vivo :

 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) { $("

").html(msg).appendTo(document.body); } });

     

La respuesta de TJ Crowder ( https://stackoverflow.com/a/6471992/481154 ) es muy buena y sigue siendo precisa. Disparar el evento de cambio dentro de la función onSelect es lo más cercano que va a obtener.

Sin embargo, hay una propiedad agradable en el objeto datepicker ( lastVal ) que le permitirá disparar de manera condicional el evento de cambio solo en los cambios reales sin tener que almacenar los valores usted mismo:

 $('#dateInput').datepicker({ onSelect: function(d,i){ if(d !== i.lastVal){ $(this).change(); } } }); 

Luego solo maneje los eventos de cambio como lo normal:

 $('#dateInput').change(function(){ //Change code! }); 

Está buscando el evento onSelect en el objeto datepicker:

 $('.selector').datepicker({ onSelect: function(dateText, inst) { ... } }); 
 $('#inputfield').change(function() { dosomething(); }); 

Escribí esto porque necesitaba una solución para activar un evento solo si la fecha cambiaba.

Es una solución simple. Cada vez que se cierra el cuadro de diálogo, probamos para ver si los datos han cambiado. Si es así, activamos un evento personalizado y restablecemos el valor almacenado.

 $('.datetime').datepicker({ onClose: function(dateText,datePickerInstance) { var oldValue = $(this).data('oldValue') || ""; if (dateText !== oldValue) { $(this).data('oldValue',dateText); $(this).trigger('dateupdated'); } } }); 

Ahora podemos conectar manejadores para ese evento personalizado …

 $('body').on('dateupdated','.datetime', function(e) { // do something }); 

Estoy usando bootstrap-datepicker y ninguna de las soluciones anteriores funcionó para mí. Esta respuesta me ayudó …

El evento de fecha de cambio de selector de fecha de inicio de sesión no se activa cuando se editan fechas manualmente o se borran fechas

Esto es lo que apliqué:

  $('.date-picker').datepicker({ endDate: new Date(), autoclose: true, }).on('changeDate', function(ev){ //my work here }); 

Espero que esto pueda ayudar a otros.

En jQueryUi 1.9 he logrado que funcione a través de un valor de datos adicional y una combinación de funciones beforeShow y onSelect:

 $( ".datepicker" ).datepicker({ beforeShow: function( el ){ // set the current value before showing the widget $(this).data('previous', $(el).val() ); }, onSelect: function( newText ){ // compare the new value to the previous one if( $(this).data('previous') != newText ){ // do whatever has to be done, eg log it to console console.log( 'changed to: ' + newText ); } } }); 

Funciona para mi 🙂

Prueba esto

 $('#dateInput').datepicker({ onSelect: function(){ $(this).trigger('change'); } }}); 

Espero que esto ayude:)

Sé que esta es una vieja pregunta. Pero no pude obtener el evento jquery $ (this) .change () para disparar correctamente en Seleccionar. Así que fui con el siguiente enfoque para disparar el evento de cambio a través de vanilla js.

$('.date').datepicker({ showOn: 'focus', dateFormat: 'mm-dd-yy', changeMonth: true, changeYear: true, onSelect: function() { var event; if(typeof window.Event == "function"){ event = new Event('change'); this.dispatchEvent(event); } else { event = document.createEvent('HTMLEvents'); event.initEvent('change', false, false); this.dispatchEvent(event); } } });

Manual dice:

 apply.daterangepicker: Triggered when the apply button is clicked, or when a predefined range is clicked 

Asi que:

 $('#daterange').daterangepicker({ locale: { cancelLabel: 'Clear' } }); $('#daterange').on('apply.daterangepicker', function() { alert('worked!'); }); 

Funciona para mi.

Mi solución es:

events: { 'apply.daterangepicker #selector': 'function' }

DatePicker seleccionó el código de evento de cambio de valor a continuación

 /* HTML Part */ 

Date:

/* jQuery Part */ $("#datepicker").change(function() { selectedDate= $('#datepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val(); alert(selectedDate); });

si está usando wdcalendar esto va a ayudarlo

  $("#PatientBirthday").datepicker({ picker: "", onReturn:function(d){ var today = new Date(); var birthDate = d; var age = today.getFullYear() - birthDate.getFullYear(); var m = today.getMonth() - birthDate.getMonth(); if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { age--; } $('#ageshow')[0].innerHTML="Age: "+age; $("#PatientBirthday").val((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear()); } }); 

el evento onReturn funciona para mí

espero que esto ayude

Tratar :

 $('#idPicker').on('changeDate', function() { var date = $('#idPicker').datepicker('getFormattedDate'); });