jQuery live () falla con jQuery UI datepicker

Ok, estoy intentando usar el complemento FaceBox () para jQuery junto con el datepicker () de la interfaz de usuario de jQuery.

Lo tengo para enlazar a las entradas de la caja de luz en la primera aparición de la caja de luz, pero no funciona después.

Estoy haciendo lo siguiente:

 $(function() { $('.jQueryCalendar').live('click', function () { $(this).datepicker({showOn: 'both'}).focus(); }); }); 

Cuando la caja de luz se cierra, vuelvo a añadir su contenido a la página (para no perder el div de contenido), y esto parece estar matando la llamada en vivo (). [NB: el re-agregado tiene lugar después de que se destruye el contenido original]

EDITAR

Ok, el evento live () se está activando (gracias a Nick Craver por eso), sin embargo, el selector de fecha ya no se muestra. ¿Alguien tiene una idea de por qué?

EDITAR # 2

Bien, el uso de .html () para volver a agregar hace que los eventos necesiten volver a vincularse, pero el elemento a vincular todavía tiene la clase hasDatepicker, que se mete con la inicialización datepicker ().

Para arreglar, simplemente usuario

 $(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus(); 

Intenta esto y ve que pasa:

 $(function() { $('.jQueryCalendar').live('click', function () { $(this).datepicker('destroy').datepicker({showOn: 'both'}).focus(); }); }); 

Si está utilizando jQuery UI 1.7.2 con jquery 1.4, algunos efectos destruyen los widgets, se desvanecen, etc. pueden estar causando problemas con el selector de fecha. jQuery UI 1.8 soluciona esto, está en estado RC3 en este momento.

 $(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus(); 

resolví mi problema

¡Gracias!

esto me funcionó

 $.datepicker.setDefaults({ dateFormat: 'yy-mm-dd', ... }); $('input.date').live('focus', function() { $(this).datepicker().datepicker('show'); true; }); 

Esto funcionó para mí:

 $('.datepicker').live('mousedown', function(){ $(this).datepicker({ dateFormat: 'mm/dd/y }); }); 

No es así como .live() se ha eliminado de jQuery a partir de 1.9 y debe ser reemplazado por .on() . Usando la nueva syntax obtendrías:

 $(document).on('mousedown', '.datepicker', function(){ $(this).datepicker({ dateFormat: 'mm/dd/y }); }); 

es posible que el datepicker esté detrás de la caja …

También tuve el mismo problema hace un tiempo.

pon esto en un archivo css, y eso me sirvió de truco.

 #ui-datepicker-div { z-index:9999999; } 
 $( "#datepicker" ).live('mousedown',function() { $(this).datepicker({ dateFormat: 'dd/mm/yy', minDate: 0 }); }); 

Prueba esto ..

Tuve el mismo problema, pero el problema era que tenía muchas “fichas” con fechas de inicio y finalización. No estaba obteniendo los resultados que necesitaba porque la identificación para cada fecha de inicio era la misma, así como la fecha de finalización. También con varios campos de fecha, estaba obteniendo el datePickers que devolvía todos los valores establecidos en la primera instancia de un campo de fecha.

Este código funcionó para mí:

[EN HTML]





[EN JAVASCRIPT INCLUYE]

// set the datePicker on the start and end fields

$('input.dateStart').datepicker({dateFormat:"yy-mm-dd", changeYear: true});

$('input.dateEnd').datepicker({

dateFormat:"yy-mm-dd",

changeYear: true,

beforeShow: function(){

var value = $(this).siblings('.dateStart').val();

$(this).datepicker('option', 'minDate', value);

}

});

Espero que esto ayude a alguien más con los mismos problemas!

bo huttinger

Puedes intentar usar el plugin .livequery

 $('.jQueryCalendar').livequery(function() { // This will fire for each matched element. // It will also fire for any new elements added to the DOM. $(this).datepicker(options); }); 

encontré la respuesta aquí