He creado cuadros de texto dinámicamente y quiero que cada uno de ellos pueda mostrar un calendario al hacer clic. El código que estoy usando es:
$(".datepicker_recurring_start" ).datepicker();
Lo cual solo funcionará en el primer cuadro de texto, aunque todos mis cuadros de texto tienen una clase llamada datepicker_recurring_start.
¡Su ayuda es muy apreciada!
javascript
jquery
jquery-ui
datepicker
empapado
fuente
fuente
Respuestas:
aquí está el truco:
MANIFESTACIÓN
La
$('...selector..').on('..event..', '...another-selector...', ...callback...);
sintaxis significa:agregue un oyente a
...selector..
(body
en nuestro ejemplo) para el evento..event..
('foco' en nuestro ejemplo). Para todos los descendientes de los nodos coincidentes que coincidan con el selector...another-selector...
(.datepicker_recurring_start
en nuestro ejemplo), aplique el controlador de eventos...callback...
(la función en línea en nuestro ejemplo)Ver http://api.jquery.com/on/ y especialmente la sección sobre "eventos delegados"
fuente
.datapicker()
cada vez que el cuadro de texto se enfoque, por lo que deberías tener cuidado con este enfoque (asumiendo que estoy leyendo esto bien). Sin embargo, creo que estaría bien con el.datapicker()
porque probablemente verificará si se crea un selector de fecha antes de intentar recrearlo. Con otro código, es posible que no tenga esta gracia. Además, .on (solo se presenta en JQuery 1.7, así que asegúrese de usar la versión correcta.:not(.hasDatepicker)
Para mí, a continuación, jquery funcionó:
cambiando "cuerpo" a documento
Gracias a skafandri
Nota: asegúrese de que su identificación sea diferente para cada campo
fuente
Excelente respuesta de skafandri +1
Esto se acaba de actualizar para comprobar la clase hasDatepicker.
fuente
$('body').on('focus',".datepicker:not(.hasDatepicker)", function(){$(this).datepicker();});
?Asegúrese de que su elemento con la
.date-picker
clase NO tenga ya unahasDatepicker
clase. Si lo hace, incluso un intento de reinicialización con$myDatepicker.datepicker();
fallará. En su lugar, debes hacer ...fuente
Debe ejecutar
.datepicker();
nuevamente después de haber creado dinámicamente los otros elementos del cuadro de texto.Recomendaría hacerlo en el método de devolución de llamada de la llamada que agrega los elementos al DOM.
Entonces, digamos que está utilizando el método JQuery Load para extraer los elementos de una fuente y cargarlos en el DOM, haría algo como esto:
fuente
El nuevo método para los elementos dinámicos es MutationsObserver . El siguiente ejemplo usa underscore.js para usar la función (_.each).
fuente
Esto fue lo que funcionó para mí (usando jquery datepicker):
fuente
Ninguna de las otras soluciones funcionó para mí. En mi aplicación, agrego los elementos del rango de fechas al documento usando jquery y luego les aplico datepicker. Entonces, ninguna de las soluciones de eventos funcionó por alguna razón.
Esto es lo que finalmente funcionó:
Espero que esto ayude a alguien porque esto me hizo retroceder un poco.
fuente
puede agregar la clase .datepicker en una función de javascript, para poder cambiar dinámicamente el tipo de entrada
fuente
He modificado la respuesta de @skafandri para evitar volver a aplicar el
datepicker
constructor a todas las entradas con la.datepicker_recurring_start
clase.Aquí está el HTML:
Aquí está el JS:
aquí hay una demostración funcional
fuente
Esto es lo que funcionó para mí en JQuery 1.3 y se muestra en el primer clic / enfoque
esto necesita que tu entrada tenga la clase 'mostrar_calendario'
Live es para JQuery 1.3+ para las versiones más nuevas necesita adaptar esto a "on"
Vea más sobre la diferencia aquí http://api.jquery.com/live/
fuente
fuente