example español bootstrap javascript jquery twitter-bootstrap datepicker

javascript - español - Bootstrap Datepicker en cambio disparando 3 veces



datepicker format (11)

Como algunos ya han mencionado, usa esto:

$(''#calendar'').on("changeDate", function() { });

El truco es usar changeDate lugar de change .

Hola, he estado tratando de obtener la fecha de un selector de fecha de arranque y he podido, pero parece que se dispara 3 veces. NOTA: Este no es un selector de fecha jquery sino un selector de fecha de arranque.

Utilizando este selector de fecha: https://github.com/eternicode/bootstrap-datepicker , no eyecon.ro antiguo.

$(".date-picker").on("change", function(e) { contents = $(this).val(); id = $(this).attr(''id''); console.log("onchange contents: " + contents); console.log("onchange id: " + id); });

HTML:

<input id="start_date" type="text" data-date-format="yyyy-mm-dd" class="date-picker form-control" />

He usado algunas otras opciones además del cambio, como

$(''.date-picker'').datepicker().change(function(){};

Pero esto no cierra el selector de fechas, esperando que haya una solución fácil para esto. Gracias


Deberías estar usando el evento "changeDate". Por ejemplo:

var datePicker = $(''.date-picker'').datePicker().on(''changeDate'', function(ev) { //Functionality to be called whenever the date is changed });

Por favor vea la documentación here para más información sobre este evento.


Obtenga el conteo global de variables y verifique si es igual a 0 y luego ejecute su función.

var count=0; $( "#Id" ).datepicker({ minDate: 0}).on(''change'',function (){ if(count==0) validity();//any function count=1; }); validity(){ count=0;}


Parece como si al verificar el evento de change , si el cambio fuera de la interacción real del usuario , el evento de cambio contenga un valor para originalEvent .

El evento NO contiene este valor si la entrada se cambió a través de JS: $obj.val(''1990-03-07'').change() y lo mismo con bootstrap-datepicker

Así es como lo configuro:

Configuración inicial genérica

// General selector for date inputs var $obj = $(''input[type="date"]''); $obj.datepicker({ // options here, not important for this example });

Manejar cambios específicos bootstrap-datepicker

$obj.datepicker().on(''changeDate'', function (event) { handleInputDateAndTimeChange(event); });

Ahora, lidiar con los cambios de interacción del usuario

$(''input[type="date"], input[type="time"]'').change(function (event) { // This checks if change was initiated by user input and NOT JS if(event.originalEvent !== undefined) { handleInputDateAndTimeChange(event); } });

Y finalmente, aquí está la función handleInputDateAndTimeChange

function handleInputDateAndTimeChange(event) { var $input = $(event.target); // Do what you want with $input object here... }


Por favor use la función changeDate en lugar del cambio.


Probé la respuesta de # pgee70 y no me funciona. Así que esta es mi solución, espero su ayuda.

var send=true; $(''.input-group.date'').datepicker({ todayBtn: "linked", keyboardNavigation: false, forceParse: false, language: ''es-ES'', weekStart: 1, format: ''dd/mm/yyyy'', enableOnReadonly:false, calendarWeeks: true, autoclose: true, todayHighlight:true }).on("changeDate", function(e) { if(send){ modificarFechaAplicacionCliente($("#input_filtro_fecha_cliente").val()); send=false; } setTimeout(function(){send=true;},200); });

No es una solución idónea, pero es trabajo.


Se ha corregido encontrar su archivo js datepicker fijo HERE

Lea la descripción de la fijación HERE


Similar a la respuesta anterior, pero debe usar el selector de fechas a menos que haya cambiado el nombre de la función:

var datePicker = $(''.date-picker'').datepicker().on(''changeDate'', function(ev) { //Functionality to be called whenever the date is changed });

Esto funciona para mí, excepto en mi caso, cambié el nombre de la función a datepickerBootstrap para evitar el choque con JQuery. Entonces se convertiría en:

var datePicker = $(''.date-picker'').datepickerBootstrap().on(''changeDate'', function(ev) { // On change functionality });


no soluciona el problema, pero estaba usando el selector de fechas para enviar a través de una publicación de ajax, por lo que los 3 eventos de cambio me estaban causando problemas: el 3er evento siempre fallaba. incluso si la documentación dice que se debe usar un evento changeDate, no me parece correcto disparar el evento change de la etiqueta de entrada 3 veces. ¡El valor no cambia 3 veces!

Escribí una función simple de ''rebotar'' para solucionar el problema. no soluciona el problema, lo que se debe a que se activaron múltiples eventos de cambio desde los métodos: setValue (línea 508) _setDate: (línea 1048) y setValue (línea 508) (versión 1.3.0) del widget.

var lastJQueryTS = 0 ;// this is a global variable. .... // in the change event handler... var send = true; if (typeof(event) == ''object''){ if (event.timeStamp - lastJQueryTS < 300){ send = false; } lastJQueryTS = event.timeStamp; } if (send){ post_values(this); }

es bastante simple, solo encuentra el ''evento'' de jquery, y se asegura de que los valores en una ventana de 300ms sean ignorados. en mi prueba todo esto sucedió en 30 mseg aproximadamente.


poco molesto .. mi código era:

var c=0;var send=false; $(document).ready(function() { jQuery( ".ed" ).datepicker({ format: "yyyy-mm-dd", autoclose:!0 }).on(''change'',function() { if(c==2){ c=0; send=true; }else{ c++; send=false; } }); });


var pickerFireCount = 0; function checkSelectedDateIsHollyday(rId) { pickerFireCount++; if (pickerFireCount == 3) { if (!selectedDateIsHolyday(rId)) { showInfoMessage(''The date you selected is a holiday.''); pickerFireCount = 0; } } }