2010-03-02 19 views
5

Necesito crear un filtro dinámico que agregue/elimine filas dinámicamente.Código de selector de fecha dinámico de JQuery

Contiene un cuadro desplegable. Según el valor del cuadro desplegable seleccionado, creo un <TD> dinámico que puede tener un campo de texto o una lista desplegable.

Si se trata de un campo de texto, entonces tengo que agregar el selector de fecha para ese campo de texto.

He hecho esto, excepto el selector de fecha para el campo de texto generado dinámicamente.
Si está creando 100 filas, los nombres de los campos de texto deben ser iguales para todas las filas.

¿Cómo agregar datepicker para el campo de texto generado dinámicamente?

Respuesta

1

Tirst añadir un atributo de clase como "fecha" a su entrada o div.

Después de agregar dinámicamente una entrada de texto para tener que recuperar $('.date').datePicker() nuevamente para vincular datePicker a nuevas entradas o div.

+0

Hola Luca, gracias por su respuesta. Mi código es, $ ('td: eq (2)', newRow) .html (' '); $ ('. Date'). DatePicker(); \t Pero no muestra nada por favor ayúdenme lo que tengo que hacer. Dame tu valiosa ayuda por favor. – Shanmugam

+0

¿estás usando jquery ui, es correcto? si es así, primero date la fecha correctaPicker datepicker ... escribí datePicker antes mientras escribía sobre la marcha ... además de que tu código se ve bien ... también asegúrate de que se llame (agregando una alerta()?) –

16

Tuve el mismo problema. Debería volver a vincular el DatePicker a la fila añadida dinámicamente. El selector de fecha asocia una clase hadDatePicker a la fila dinámica.

Así que tendrías que eliminar eso y volver a enlazar.

Algo como esto -

jQuery('.date-pick').removeClass('hasDatepicker').datepicker({ 
    dateFormat: 'mm-dd-yy' 
    }); 

Saludos, Tina Agrawal

+0

esto funcionó perfectamente para mi Gracias Tina. –

+4

'removeClass ('hasDatepicker')' fue la clave! :) GRACIAS – Ajax

+1

Esta es la única solución que funcionó para mí. ¡Gracias! –

3

En realidad hice uso de la solución aportada por @Tina Agrawal Pero desde ahora, cuando seleccione una fecha en el calendario, hago clic de nuevo y vuelva a seleccionar. Si hago clic en el próximo mes, irá a 1900-01-01.

Bueno, fue tan extraño ...

Después de dos horas de ensayo y error y la investigación.

i simplemente lo hicieron:

$('.date-pick').live('click', function(){ 
$('.date-pick').datepicker(); 
}); 

bien que funciona.

+1

No funciona bien para mí - No veo el selector de fecha hasta después de hacer clic en el campo, así que tengo que hacer clic dos veces para obtener la ventana emergente del selector de fecha. –

+0

Puede intentar primero en document.ready $ ('. Date-pick'). Datepicker(); – workdreamer

+0

te das cuenta de que esta pregunta se trataba de campos añadidos dinámicamente al DOM, después de una llamada AJAX o similar, ¿no? ¿Cómo va a ayudar un documento? –

1

Tuve un problema similar cuando al agregar dinámicamente nuevas filas a mi tabla, los campos del Selector de Fecha en las filas nuevas (cualquier fila agregada al DOM dinámicamente) actualizaban todos mis filas iniciales en los campos Selector de Fecha.

Eliminar la clase hasDatepicker como se sugirió anteriormente no fue suficiente para resolver mi problema, probablemente porque estaba usando .clone() para crear las filas agregadas dinámicamente.

La solución cuando las filas de clonación fue eliminar los campos de entrada clonados, re-crearlos, añadirlos a mi fila de la tabla recién clonado y volver a iniciar el Selector de fecha

Por ejemplo:

//Remove exisiting cloned input fields 
new_row.find("td.date input").remove(); 

//Create new input fields and append to table td 
var date_tds = new_row.find("td.date"); 
$('<input />', {"name":"gStartDates["+n_array_pos+"]","type":"text"}).appendTo(date_tds[0]); 
$('<input />', {"name":"gEndDates["+n_array_pos+"]","type":"text"}).appendTo(date_tds[1]); 

//Re-initiate datepicker on the input fields      
new_row.find("td.date input").datepicker({ 
    dateFormat:"dd-mm-yy", 
    minDate:StartDate, 
    maxDate:EndDate 
}); 
2

que tenía el mismo problema y lo resolvió de una manera diferente. Aunque no estoy muy seguro de por qué funciona, ya que soy muy nuevo en jquery. Escribí lo siguiente e itera el conjunto completo de controles que tienen la clase "class_date" y vuelve a vincular el control datepicker.

$(".class_date").removeClass('hasDatepicker').datepicker(); 
Cuestiones relacionadas