Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/07/2007, 08:02
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 2 meses
Puntos: 7
Re: obtener el texto de un combo

Lo mejor para esas cosas es una combinación de JavaScript y campos ocultos en el tag del formulario. Te cuento como hago yo esas cosas.

Supongamos un formulario:

Código:
<form name="form1" method="post" action="recogedatos.asp">

<select name="select">
  <option value="1">Valor 1</option>
  <option value="2">Valor 2</option>
  <option value="3">Valor 3</option>
</select>

<input name=" insert" type="submit" value="Aceptar" class="enviar"/>

</form>
Al pulsar el boton de enviar, el archivo recogedatos.asp recibirá solo dos parejas de datos (name/value): select=1&insert=Aceptar. Como ves, solo se admiten parejas de datos (data set pairs en inglish :P ) en el envio del formulario. Entonces, ¿como envio el otro valor? Usando un campo más :D

Código:
<form name="form1" method="post" action="recogedatos.asp">

<input name="texto" type="hidden" value="" /> 

<select name="select">
  <option value="1">Valor 1</option>
  <option value="2">Valor 2</option>
  <option value="3">Valor 3</option>
</select>

<input name=" insert" type="submit" value="Aceptar" class="enviar"/>

</form>
Ahora tenemos tres parejas de datos. Solo nos falta añadir el valor a ese campo oculto. Para ello usaremos JavaScript y una pequeña funcioncilla que hará de intermediaria entre el formulario y el envio de este.

Código:
<script type="text/javascript">
<!--
  function funcioncilla() {
     var doc = document.form1

     doc.texto.value = doc.select.options[doc.select.selectedIndex].text;

     return true;

  }
-->
</script>

<form name="form1" method="post" action="recogedatos.asp" onSubmit="return funcioncilla()">
 
<input name="texto" type="hidden" value="" /> 

 <select name="select">
   <option value="1">Valor 1</option>
   <option value="2">Valor 2</option>
   <option value="3">Valor 3</option>
 </select>
 
 <input name=" insert" type="submit" value="Aceptar" class="enviar"/>
 
 </form>
Si te fijas, el formulario comprobará la función funcioncilla antes de enviar los datos ya que esa es la misión del evento onSubmit: disparar una acción antes de enviarse.

Esta función JavaScript realmente es una sola linea:

doc.texto.value = doc.select.options[doc.select.selectedIndex].text;

como ves, asignamos a ese campo oculto que estaba vacio el texto (no su valor) de la opción seleccionada y luego devuelve true para que se envie sin demora Cuando llegue a la página recogedatos.asp, la información estará en parejas pero esta vez asi:

select=1&texto=Valor 1&insert=Aceptar

Con lo que ya tienes el texto del combo

NOTA: te recuerdo que para que funcione correctamente, javascript debe estar habilitado en el cliente (80% de los casos).



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -