Foros del Web » Programando para Internet » Javascript »

Referenciar a un elemento de un formulario de forma complicada mediante ".elements"

Estas en el tema de Referenciar a un elemento de un formulario de forma complicada mediante ".elements" en el foro de Javascript en Foros del Web. Veréis, quiero referenciar a un elemento de un formulario, de la manera típica. Por ejemplo, suponiendo que se trata de input de texto llamado "caja1": ...
  #1 (permalink)  
Antiguo 11/09/2005, 14:59
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Referenciar a un elemento de un formulario de forma complicada mediante ".elements"

Veréis, quiero referenciar a un elemento de un formulario, de la manera típica. Por ejemplo, suponiendo que se trata de input de texto llamado "caja1":

Código:
alert(document.formulario1.caja1.value)
Pero la cosa se complica un poco más. Quiero que la referencia se haga desde una función que recibe un valor para referenciarlo, y esto también sé hacerlo:

Código:
num_campo=1
alert(document.formulario1.elements['caja'+num_campo].value)
¿Hasta aquí todo claro? Porque ahora viene el problema: ¡resulta que tengo varios elementos con ese mismo nombre! Diferenciarlos habitualmente no es problema, porque basta con poner caja(1), caja(2)... Ahora bien, ¿cómo puedo hacer dicha referencia desde dentro del elements?

Por ejemplo, probando un ejemplo que no funcionaría:

Código:
num_campo=1
alert(document.formulario1.elements['caja'+num_campo+'(0)'].value)
He probado de mil formas distintas y no me sale.

Saludos
  #2 (permalink)  
Antiguo 11/09/2005, 17:41
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
esa forma es anticuada y solo compatible con explorer, ahora se usa document.getElementById('mi_campo');

y el campo sería algo asi

<input type="text" id="mi_campo" name="lalalala">
  #3 (permalink)  
Antiguo 11/09/2005, 20:40
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Hmmm, ok. ¿Y qué le pongo en id? Porque es obvio que no puedo repetir id's, a diferencia de los nombres... Tendré que inventarme algo.

De todas formas me gusta la idea. Porque permite poner unos nombres que son los que se enviarán al servidor y serán recogidos desde el Request.form, al tiempo que para el lado del cliente permite trabajar con otros nombres (los id) diferentes.

Saludos

PD: ¿Del método que he dicho no conoces la forma para solucionar esa problemática concreta?
  #4 (permalink)  
Antiguo 12/09/2005, 02:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

¿Cómo están los campos definidos...

name="campo"
o name="campo[]"...

sea como sea... se supone que puedes poner el índice entre corchetes.

num_campo=1
alert(document.formulario1.elements['caja'][num_campo].value)...

Haz una búsqueda en los foros, que es una pregunta que ya se ha planteado.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 12/09/2005, 05:47
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Ok, gracias caricatos, de todas formas ya lo solucioné con la forma que dijo Carajodida (que no sé si será verdad eso de que esa forma ya está anticuada y sólo va en el explorer... algo de verdad esto último parece que tiene, pero lo cierto es que he intentado probar tanto su forma como la mía en el firefox y no me ha funcionado ninguna de las dos :P).

Me pareció muy buena idea (él no dijo que fuera para eso pero creo que es la idea) el dividir los datos de manejo entre el cliente y el servidor, de forma tal que se usen las id's para manejos del cliente y los names para manejos del servidor. Me resultó facilísima la referencia que quería hacer (aunque de haber sabido "tu forma", también me habría resultado muy fácil, la verdad).

Saludos
  #6 (permalink)  
Antiguo 12/09/2005, 06:07
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
el método elements está en javascript desde que javascript es javascript... y es compatible con todos. Lo malo es que no lo has empleado del todo bien.

El método fetén es:

document.forms['name_del_form'].elements['name_del_elemento'].value

Aunque se pueden sustituir los names por el número que hace en el código el elemento en cuestión.

El getElementById entiendo que tan vez debería usarse en otros asuntos o en XHTML puro que por lo visto va a pasar de los names en beneficio de los id.

Saludos a todos!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:18.