2012-09-07 22 views
7

Tengo un pequeño problema con mi jQuery UI datepicker. La cosa es que tengo a mi página y alguna entrada como esta:datepicker se aplica al campo incorrecto

blabla | blabla | .date-picker | blabla 
blabla2 | blabla2 | .date-picker | blabla2 
blabla3 | blabla3 | .date-picker | blabla3 

Así que la 'blabla' son sólo algunos de texto, y el '.date-picker' es una entrada, con el 'selector de fecha ' clase.

En mi código JavaScript que acabo de lo siguiente:

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

Pero por ejemplo, si hago clic en la entrada de la línea "blabla3", en lugar de actualizar la entrada derecha, siempre actualiza la primera uno ...

Mi entrada tiene todos la misma identificación (no puedo cambiarla), pero estoy usando la clase de la entrada para mi selector, por lo que debería funcionar pero no funciona.

+0

mismos conflictos de id! – AlphaMale

+0

Tener varios elementos con el mismo ID no es válido y no podemos controlar el comportamiento de nada si elige hacerlo. – sevenseacat

Respuesta

2

Debe cambiar la identificación de sus entradas, de lo contrario no funcionará, porque, cuando seleccione cualquier fecha, use DP_jQuery_1347006322116.datepicker._selectDay('#same',8,2012, this);return false; esta función para seleccionar el día, y está tomando la identificación para la entrada.

así que si tiene varias identificaciones, seleccionará la primera entrada y establecerá el día allí.

+0

¡Gracias por esta clara explicación! ¿Realmente no hay posibilidad de hacerlo sin cambiar los id? Porque el código PHP detrás del formulario tendrá que cambiar completamente si cambio los ID de mi entrada ... Antes en mi página, estaba usando el selector de fechas para seleccionar solo el año y el mes, con este código: http: // pastebin. com/rnDSKnvp Y funcionó de maravilla. ¿Hay alguna solución para agregar el día en el código anterior? – user1506157

2

Tuve un problema similar en el que usaría javascript para agregar dinámicamente nuevos contenedores DIV que contengan campos de fecha con las mismas etiquetas de identificación. El único método para resolver en mi caso era reescribir dinámicamente todos los ID y luego destruyen/crear la funcionalidad selector de fechas:

var n=0;  
$("[id*='blabla']").each(function(){ 
    n++; 
    tempField = this.id.split("-"); 
    this.id = tempField[0]+"-"+n; 
    }); 

// first remove datepicker functionality since renaming of id above then    
// add datepicker to any field with "datepicker" as class 

    $("input.datepicker").datepicker("destroy").datepicker(); 

que modificó el anterior para adaptarse a su caso de uso (creo). Espero que esto ayude.

BTW: La razón por la que estoy dividiendo por un guión ("-") es porque puedo llamar a esta función cada vez que creo dinámicamente otro contenedor DIV con campos datepicker. Cambiará sistemáticamente el nombre de todos los ID en orden secuencial para el posterior procesamiento del formulario.

+0

hombre, casi quiero rechazar ese debido a su naturaleza de piratear el núcleo, y el código feo ... jaja. Creo que hay una manera mejor y no estaría contento con esta implementación. – blamb

4

Hola antiguo puesto, pero es para aquellos que todavía se enfrentan a este problema ...

Basta con retirar la id de la nueva entrada, selector de fechas siempre se genera un nuevo identificador es decir, si la entrada no tiene uno. Si tuviera uno, datepicker lo mantendría, lo que significa que aquí se clonó la primera entrada y la última también se actualizará.

+2

Ponga un código de trabajo, sería más fácil. –

+0

Probado y esto es correcto, una vez que eliminé el campo ID, se genera uno único por selector de fecha, ¡¡¡gracias !! – sMyles

Cuestiones relacionadas