Foros del Web » Programando para Internet » Javascript »

problema con sintaxis en campos de formularios agrupados vectorialmente

Estas en el tema de problema con sintaxis en campos de formularios agrupados vectorialmente en el foro de Javascript en Foros del Web. Saludos, comunmente si quisiera cambiar por ejemplo el valor de un campo de formulario que pudiese tener por ejemplo un valor inicial igual a cero ...
  #1 (permalink)  
Antiguo 06/04/2005, 08:26
 
Fecha de Ingreso: abril-2005
Mensajes: 6
Antigüedad: 19 años
Puntos: 0
problema con sintaxis en campos de formularios agrupados vectorialmente

Saludos,

comunmente si quisiera cambiar por ejemplo el valor de un campo de formulario que pudiese tener por ejemplo un valor inicial igual a cero teclearia lo siguiente en caso de que se ejecute una accion:

onclick="document.formulario.campo.value=1"

esto se hace sin ningun problema o reporte de error, el caso es cual seria la sintaxis si actualmente estoy agrupando mis campos como parte de un arreglo,

por decir algo tengo un campo que se llama campo[3], obviamente el valor de ese campo se almacenara en la posicion 3 del vector, pero cuando ocurre un evento que requiere que ese valor cambie usar la siguiente sentencia me da error en el navegador:

document.formulario.campo[3].value=1

se que hay una restriccion con los corchetes porque creo lo entiende como otro tipo de instancia, pero como decirle que el valor o la propiedad a cambiar se encuentra en un objeto que esta en una posicion de un arreglo?

gracias por cualquier ayuda
  #2 (permalink)  
Antiguo 06/04/2005, 09:21
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
Y si lo haces así:

suponiendo que es:

Código HTML:
<form name="formulario" action ...>
<input type="text" value="Pepote" name="campo3" />
</form> 
Referenciarlo así:
Código PHP:
<script>
p=3;
alert(document.forms['formulario']['campo'+p].value);
</script> 
¿Te serviría?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 06/04/2005, 09:57
 
Fecha de Ingreso: abril-2005
Mensajes: 6
Antigüedad: 19 años
Puntos: 0
De hecho hay pasajes donde trabajo asi, pero te explico la finalidad de lo que hago:

todo es un programa en php, y exiten campos en el formulario que se generan dinamicamente. con lo finalidad del que el usuario ponga tantos parametros como necesite, cada campo generado forma parte de una posicion del vector, que gano yo con eso?, que al enviar el formulario no tengo que jugar con la cantidad de variables que me puedan haber llegado desde post sino que trabajo directamente sobre el arreglo que contenia los campos dinamicos sin importar su tamaño, la idea al final es hacer un implode y llevar la matriz a un string.

volviendo a lo que es la materia en este caso javascript, probe hasta con arreglos asociativos y tampoco me funciona, el codigo usado es el siguiente:

Código:
echo '<input name=md[\'md'.($i+1).'\'] type="hidden" value="'.$tratamiento[0].'">';
Esto en un caso tipico me arrojaria en tiempo de ejecucion:
Código:
<input name=md['md1'] type="hidden" value="77">
si bien se entiende dentro del arreglo asociativo md existe un campo que se llama md1 con valor 77, mi idea es hacer que ese campo md1 cambie su valor de 77 a 0 y el evento que lo controla es el siguiente:

Código:
... alert(document.hdiag.md[md'.($i+1).'].value);
claro como no se ni como es la sintaxis para cambiar el valor, primero intento mostrar el valor en pantalla para ver si acerte.

en tiempo de ejecucion queda

Código:
... alert(document.hdiag.md[md1].value);
cuando se genera el evento me dice que md1 no esta definido, he probado al declarar el campo la variable con comillas y sin comillas obteniendo lo mismo, por eso es que hacia enfasis a como acceder al elemento de un vector dentro de un form.

respecto a este codigo que pusistes

Código:
alert(document.forms['formulario']['campo'+p].value);
donde dice campo+p deberia haber alguna manera de llamar al elemento de un vector. lo mas inmediato que se me ocurre es

Código:
alert(document.forms['formulario'][campo[nombre]].value);
pero aun asi es erroneo

gracias por tu respueta
  #4 (permalink)  
Antiguo 06/04/2005, 10:13
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola lcrd

Se me ocurre que vayas recorriendo todos los elementos del formulario hasta que encuentres el que te conviene. Te he preparado un ejemplo, utiliza cuadros de texto para que veas como cambia el valor, pero debería funcionar también con campos ocultos:
Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
cambiar(num,valor) {
  for(
i=0;ele=document.nombreFormulario.elements[i];i++) {
    
nombre=ele.name.split("'");
    if(
nombre[1]=='md'+num) {
      
ele.value=valor;
      return;
    }
  }
}
</script>
</head>
<body>
<form name="nombreFormulario">
<input name="md['md1']" type="text" value="77">
<input name="md['md2']" type="text" value="77">
<input name="md['md3']" type="text" value="77">
<form>
<input type="button" onclick="cambiar(2,99)" />
</body>
</html> 
Saludos,
  #5 (permalink)  
Antiguo 06/04/2005, 10:39
 
Fecha de Ingreso: abril-2005
Mensajes: 6
Antigüedad: 19 años
Puntos: 0
Saludos JavierB

Esa idea esta muy buena, en efecto como era de esperarse funciona tambien en los campos ocultos.

Gracias por el aporte

LCRD
  #6 (permalink)  
Antiguo 06/04/2005, 11:01
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Me alegro de que te haya gustado y de que te haya funcionado. Hasta pronto
  #7 (permalink)  
Antiguo 06/04/2005, 11:46
 
Fecha de Ingreso: abril-2005
Mensajes: 6
Antigüedad: 19 años
Puntos: 0
Tanto dar hasta que salio:

analizando un poco el algoritmo de javierb y poniendo algo de transitividad al azar con las frases una solucion en una sola linea seria:

Código:
document.nombreFormulario.elements['md[\'md1\']'].value
donde dice md1 lo sustituyo por la variable php de turno.

claro esto muy adaptado a lo que necesitaba, la primera solucion seria la mas universal, aparte no he comprobado si este codigo que pongo aqui, funcionaria en otros navegadores como firefox.

Saludos
  #8 (permalink)  
Antiguo 06/04/2005, 12:25
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
¡Elefantes volantes! Pues tienes toda la razón. Nunca me acuerdo que se puede acceder con elements['nombreControl'], además si que funciona en fiefox. Ahora soy yo el que te da las gracias por tu ayuda.

Voy a cambiar el código que puse en el otro mensaje, antes de que aparezca KarlanKas y me regañe por complicarlo:
Código PHP:
function cambiar(num,valor) {
  
document.nombreFormulario.elements["md['md"+num+"']"].value=valor;

Saludos,
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 18:00.