Foros del Web » Programando para Internet » Javascript »

Tratamiento de cadenas y de formularios

Estas en el tema de Tratamiento de cadenas y de formularios en el foro de Javascript en Foros del Web. Os cuento mi problema: Yo tengo varios selects, y cada uno con un nombre (mi_select1, mi_select2, etc.). En el evento onChange, tengo asociada una función, ...
  #1 (permalink)  
Antiguo 21/02/2005, 23:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Tratamiento de cadenas y de formularios

Os cuento mi problema:

Yo tengo varios selects, y cada uno con un nombre (mi_select1, mi_select2, etc.). En el evento onChange, tengo asociada una función, y puedo pasarle como valor this.name (así envío mi_select1, mi_select2, etc.).

Pues bien, mis dudas no solucionadas hasta aquí son:

Si en javascript quiero escribir:

Código:
document.formulario.mi_select1.value
(donde mi_select1 es un ejemplo, y a priori no sé cuál va a llegar), ¿qué debo hacer? ¿cómo puedo hacer un document.formulario.selectx.value?

Otra cosa distinta: ¿Cómo puedo separar el número del mi_select, con tratamiento de cadenas? Es decir, que si tengo mi_select4, obtener el 4 como una variable aparte que luego pueda concatenar a otra cadena (lo necesito porque tengo por ahí unos input de texto asociados a los select, que tienen el mismo número, pero distinto nombre, y que quiero modificar según el select que haya llamado a la función, o dicho de otra forma: cada select debe influir sobre su propio cuadro de texto).

Gracias

Última edición por un_tio; 21/02/2005 a las 23:24
  #2 (permalink)  
Antiguo 22/02/2005, 02:56
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

Lo que pides es fácil.

Te sugiero que trates los elementos de formularios así:

Código:
document.forms['formulario'].elements['mi_select1'].value;
De esta forma te será más fácil hacer lo que quieras. Así sólo tienes que poner:

function tonteria(esto){
alert(document.forms['formulario'].elements[esto].value);
}

siendo "esto" el this.name que has dicho antes.

Para sacar el número sólo tienes que poner:
numero=esto.substring(9);

Y para aplicar ese numero a un mi_input (por ejemplo) pon:

document.forms['formulario'].elements['mi_input'+numero].value;

Espero que te haya servido...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 22/02/2005, 10:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Vaya que si me ha servido, me lo has dicho todo (ya sabía yo que tenía que haber algún modo fácil para hacerlo, como lo de indexar así). Gracias, ahora voy a probarlo.

Última edición por un_tio; 22/02/2005 a las 10:10
  #4 (permalink)  
Antiguo 22/02/2005, 10:09
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
De nada!!

Si te surge cualquier duda me la dices!

Por cierto, el

numero=esto.substring(9)

está pensado para el caso de que esto sea "mi_select1" o similar ("mi_select23"), ya que el número empieza en el caracter noveno. Si fuera otra cadena te ruego que lo tengas en cuenta!

Un saludo!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 22/02/2005, 10:11
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Ok, gracias! Ya me lo imaginé.
  #6 (permalink)  
Antiguo 22/02/2005, 18:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Una dudilla: Con .substring coges la parte derecha de una cadena. ¿Y para coger la izquierda? ¿Tal vez con la función left? (y sería left(cadena) o algo así).
  #7 (permalink)  
Antiguo 22/02/2005, 19:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 2 meses
Puntos: 0
podés pasarle dos parámetros:
Código HTML:
string.substring(int inicio, int longitud)
Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #8 (permalink)  
Antiguo 23/02/2005, 02:37
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

En realidad substring es:
string.substring(int inicio, int final).

En webestilo.com lo definen así:

Cita:
Iniciado por webestilo.com
substring(primer_Indice,segundo_Indice).

Devuelve la subcadena que comienza en la posición 'primer_Indice + 1' y que finaliza en la posición 'segundo_Indice'.

Si 'primer_Indice' es mayor que 'segundo_Indice', empieza por 'segundo_Indice + 1' y termina en 'primer_Indice'.

Si hacemos las cuentas a partir de 0, entonces es la cadena que comienza en 'primer_Indice' y termina en 'segundo_Indice - 1' (o bien 'segundo_Indice' y 'primer_Indice - 1' si el primero es mayor que el segundo).
Así si la cadena es:

123456789

y ponemos

<script>
alert("123456789".substring(3,5))
</script>

aparecerá en el alert "45" ya que toma los caracteres a partir del primer número y hasta el segundo.

Espero que te sirva!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #9 (permalink)  
Antiguo 23/02/2005, 10:56
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 2 meses
Puntos: 0
ah perdón, me confundí con PHP :S
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
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:55.