Foros del Web » Programando para Internet » Javascript »

Recoger dato de lista desplegable

Estas en el tema de Recoger dato de lista desplegable en el foro de Javascript en Foros del Web. Buenas, una vez más explico mi problema, que en este caso puede parecer una tontería pero la poca información que encuentro no me sirve... Tengo ...
  #1 (permalink)  
Antiguo 21/05/2007, 03:25
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 1 mes
Puntos: 0
Recoger dato de lista desplegable

Buenas, una vez más explico mi problema, que en este caso puede parecer una tontería pero la poca información que encuentro no me sirve...

Tengo una lista desplegable, de la que debo elegir una opción, la cual se enviará después a otra página para guardarla en la BD

Lista:

Código:
     <select name="cate" onClick="comprobarcate()">
              <option value="comics">Comics 
              <option value="conciertos">Conciertos 
              <option value="discos">Discos 
              <option value="grupos">Grupos 
              <option value="juegos">Juegos 
              <option value="locales">Locales 
              <option value="peliculas">Peliculas 
              <option value="restaurantes">Restaurantes 
              <option value="salaexposiciones">Salas de Exposiciones 
              <option value="salasconciertos">Salas de Conciertos 
              <option value="teatros">Teatros
	      </select></td>
Hasta aquí todo bien xo dónde he mirado pone que para recoger la variable es:options[options.selectedIndex].value pero a mí me da error.

Lo unico que hago en comprobarcate() es saber si funcionaba el onClick.

Finalmente, me gustaría que antes de mandar toda la información se hiciera un case con la variable que el usuario ha elegido en la lista desplegable, por lo que necesito usar esa variable.
Gracias.
  #2 (permalink)  
Antiguo 21/05/2007, 04:39
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: Recoger dato de lista desplegable

Hola Shilfild,

Esto es Javascript y, seguramente, te responderán mejor en aquel foro. De todas formas lo que pides se obtiene asi:

// Para que funcione el getElementById debes añadir
// a <select name="cate" onClick="comprobarcate()">
// el ID:
// <select name="cate" id="cate" onClick="comprobarcate()">

var obj = document.getElementById('cate');

var valor = obj.options[obj.selectedIndex].value;
var texto = obj.options[obj.selectedIndex].text;



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #3 (permalink)  
Antiguo 21/05/2007, 05:02
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Recoger dato de lista desplegable

Ains tienes razon x_x se me ha ido la pinza completamente,y es que ahora, como me voy de aquí en 2 semanas, nos entran las prisas para que lo tenga todo acabado ¬¬ y asi ando, que no se ni por dónde me da el aire xD pero funciona, muchisimas gracias...yo no sé qué hubiera hecho en esta empresa sin el foro .. xD seguiría con el primer formulario que empecé xDDD

Esto parecía muy fácil .. xD Teniendo este codigo

Código:
 <script language="JavaScript">
function comprobarcate()
{ 
	var obj = document.getElementById('cate');
	var valor = obj.options[obj.selectedIndex].value;	
}
function comprobar()
{ 
campos=''

if (formmodif.txtnoticia.value=='')
	campos=campos+"\n\n * Noticia"		
if (campos==''){
		//enviar
		formmodif.submit()
	}else{
		// Se envía a la función campos, los campos que se necesitan
		if (campos!='') {peticion(campos)}
	}
}
 
// En la variable campos están los campos requeridos
function peticion(campos)
{
alert("Rellene el campo "+campos)
}
Necesito mandarlo a otra página, teniendo en cuenta que la lista desplegable está dentro del propio formulario, cuando lo envio, no debería recoger sólo la variable?

He probado estas dos maneras:

Código:
login=Request.Cookies("login")
noti=Request.Form("txtnoticia");
 cate=Request.Form("valor");
Código:
var obj = document.getElementById('cate');
var cate = obj.options[obj.selectedIndex].value;
Pero me sale undefined dentro de la BD

Última edición por Shilfild; 21/05/2007 a las 05:18
  #4 (permalink)  
Antiguo 21/05/2007, 05:54
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: Recoger dato de lista desplegable

¿Quieres decir que al cambiar el valor seleccionado en el select, envie el formulario? o ¿el usuario es el que pulsa un boton?

Si es al selecccionar una opción en el select, es muy facil. Solo tienes que usar el evento onSelect en los atributos del select:

Código:
<select name="cate" id="cate" onSelect="comprobar()">
              <option value="comics">Comics 
              <option value="conciertos">Conciertos 
              <option value="discos">Discos 
              <option value="grupos">Grupos 
              <option value="juegos">Juegos 
              <option value="locales">Locales 
              <option value="peliculas">Peliculas 
              <option value="restaurantes">Restaurantes 
              <option value="salaexposiciones">Salas de Exposiciones 
              <option value="salasconciertos">Salas de Conciertos 
              <option value="teatros">Teatros
          </select></td>
y en la funcion comprobar()

Código:

function comprobar()
{ 
var campos=''

if (formmodif.txtnoticia.value=='')  campos=campos+"\n\n * Noticia";

if (campos==''){
        //enviar
        document.formmodif.submit()
    }else{
        // Se envía a la función campos, los campos que se necesitan
        if (campos!='') {peticion(campos)}
    }
}
 
// En la variable campos están los campos requeridos
function peticion(campos)
{
alert("Rellene el campo "+campos)
}

Como puedes ver no toco nada del select ya que el propio Select envia el value de la opción seleccionada. Si lo que quieres es enviar el text, dimelo que hay formas de hacerlo ;)



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #5 (permalink)  
Antiguo 21/05/2007, 05:56
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Recoger dato de lista desplegable

Joe, creo que me he explicado mal o algo xD
El usuario tiene que elegir la categoria, rellenar la noticia y a continuación pulsar el botón enviar, y es entonces cuando llega a la página de guardado (si es que se ha introducido una categoria) donde tenemos que recoger el valor de la lista desplegable (cate) para meterlo en una select, espero no haber liado mucho la manta...

Y si es el text, lo que necesito que me llege es: comics,conciertos etc.... No sé si me habré explicado ahora correctamente.
  #6 (permalink)  
Antiguo 21/05/2007, 07:41
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: Recoger dato de lista desplegable

Código:
<script>

function comprobar()
{ 
var campos=''
var selector = document.getElementById("cate");
var texto = selector.options[selector.selectedIndex].text;

// --     Nom.    Nom.   Atributo
//       Form.   Campo     valor
document.mandar.cate_name.value = texto;


if (document.mandar.txtnoticia.value=='')  campos=campos+"\n\n * Noticia";

if (campos==''){
        //enviar
        return true;
    }else{
        // Se envía a la función campos, los campos que se necesitan
        peticion(campos);
        return false;
    }
}
 
// En la variable campos están los campos requeridos
function peticion(campos)
{
alert("Rellene el campo "+campos)
}

</script>


<form name="mandar" method="POST" action="otrapagina.asp" onSubmit="return comprobar()">

<input type="texto" name="txtnoticia" />

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

<select name="cate" id="cate">
              <option value="comics">Comics 
              <option value="conciertos">Conciertos 
              <option value="discos">Discos 
              <option value="grupos">Grupos 
              <option value="juegos">Juegos 
              <option value="locales">Locales 
              <option value="peliculas">Peliculas 
              <option value="restaurantes">Restaurantes 
              <option value="salaexposiciones">Salas de Exposiciones 
              <option value="salasconciertos">Salas de Conciertos 
              <option value="teatros">Teatros
          </select></td>
<input type="submit" value="Enviar" name="enviar" />
</form>
Hay varias formas de llamar a un elemento de una página HTML. Yo suelo usar la forma básica:

document.formulario.campo.atributo

o la DOM

var x = document.getElementById("campo");

en la primera hago uso del atributo name (campo)
en la segundo del atributo id

TODO esto es JavaScript y poco tiene que ver con ASP pero creo que deberias aprender a tener claro qué es qué en el HTML para poder procesar despues los datos en ASP.

Este formulario manda un POST con los siguientes campos:

- txtnoticia ----------------> texto
- cate_name ---------------> Texto del tag select seleccionado
- cate ---------------------> Valor del Tag select seleccionado
- enviar -------------------> Boton



¿Eres capaz de explicarme que hace este código que te he enviado?



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #7 (permalink)  
Antiguo 21/05/2007, 09:06
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Recoger dato de lista desplegable

Bien veamos, voy a explicarte lo que buenamente he podido entender:

<input type="hidden" name="cate_name" value="" /> es un campo hidden que mantiene el value de cate_name vacio (esto no lo entiendo muy bien x_x

<form name="mandar" method="POST" action="otrapagina.asp" onSubmit="return comprobar()"> Cuando hacemos click en enviar (al form le has llamado mandar) se envia a la función comprobar, si lo que devuelve esta función es true, se envia a otrapagina.asp

document.mandar.cate_name.value = texto; ni idea, metes el string texto en cate_name?

if (document.mandar.txtnoticia.value=='') campos=campos+"\n\n * Noticia"; Si document.mandar.txtnoticia.value no tiene nada, salta el error y baja por campos.

if (campos==''){
//enviar
return true;
}else{
// Se envía a la función campos, los campos que se necesitan
peticion(campos);
return false;
}
}


Si hay algún error se devuelve False por lo que no se envia a la otra página, sino hay errores se devuelve True y se envia a la siguiente página.

Weno eso es lo que yo he entendido :P ahora a saber cuantas cosas estaran mal....por otra parte, en la segunda página puedo usar el document para traerlo? porque también he estado pensando después de estar leyendo tutoriales, que igual mehe complicado un poco la vida y que podia haber metido el resultado en una variable y haberla enviado por url o algo así, quizás esté equivocada y no se pueda.
  #8 (permalink)  
Antiguo 21/05/2007, 11:19
Avatar de soorellana  
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 17 años
Puntos: 0
Re: Recoger dato de lista desplegable

Me parece que estás un poco confundido.
ASP te brinda el objeto Request con el cual puedes recuperar cualquier parámetro enviado por URL o por POST desde un formulario. Te sugiero que leas un poco sobre este objeto que es sumamente básico.
En esta dirección que encontré puedes ver algunos ejemplos sencillos que te pueden servir de modelo: www .aspfacil.com/articulos/pasodedatos.asp

Creo que estás confundido porque cuando seleccionas un valor de cualquier lista desplegable no necesitas hacer ninguna verificación antes de enviar el formulario para saber qué ha elegido el visitante, porque lo que te va a llegar a la siguiente página es:
1. El nombre de la variable [cate]
2. El valor único que el usuario seleccionó (NO Todos, a menos que le permitas seleccionar varias alternativas para lo cual es request cambia un poco.)

Espero te sirva.
  #9 (permalink)  
Antiguo 22/05/2007, 01:11
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Recoger dato de lista desplegable

pero es que con un Request.Form(cate) no llega a la siguiente página.
  #10 (permalink)  
Antiguo 22/05/2007, 01:19
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: Recoger dato de lista desplegable

Cita:
Iniciado por Shilfild Ver Mensaje
Bien veamos, voy a explicarte lo que buenamente he podido entender:

<input type="hidden" name="cate_name" value="" /> es un campo hidden que mantiene el value de cate_name vacio (esto no lo entiendo muy bien x_x
Lo verás un poco mas adelante para lo que sirve. En ese campo vamos a meter el texto del select.

Cita:
Iniciado por Shilfild Ver Mensaje
document.mandar.cate_name.value = texto; ni idea, metes el string texto en cate_name?

Ves lo que hace? damos a ese campo oculto el texto del select ya que

var texto = selector.options[selector.selectedIndex].text;

¿Lo comprender ahora?

En la siguiente página (a donde lo mandes en el action del form) puedes recoger las 3 variables con request.form.

txtnoticia ---> text del form
cate --------> Value del select
cate_name --> Text del select





Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #11 (permalink)  
Antiguo 22/05/2007, 02:19
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Recoger dato de lista desplegable

joe, cómo me odia esto, gracias tamm por la explicación, realmente lo entiendo, pero esto sigue sin querer funcionar, sé que se recoge la variable en texto, porque lo comprobé en un alert :P

Pero sin explicarme el por qué (lo llevo leyendo una y otra vez un rato) no me redirige al siguiente formulario (incluso he probado poniendo solo un "hola") y no hay manera, la cosa sk la otra página existe y tal .. asique no sé. Pego el código que he puesto... quizás veais algo que yo no

Código:
<%@LANGUAGE="JAVASCRIPT"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<script language="JavaScript">
function comprobar()
{ 
var campos=''
var selector = document.getElementById("cate");
var texto = selector.options[selector.selectedIndex].text;

// --     Nom.    Nom.   Atributo
//       Form.   Campo     valor
document.formmodif.cate_name.value = texto;



if (document.formmodif.txtnoticia.value=='')  campos=campos+"\n\n * Noticia";

if (campos==''){
        //enviar
        return true;
    }else{
        // Se envía a la función campos, los campos que se necesitan
        peticion(campos);
        return false;
    }
}
 
// En la variable campos están los campos requeridos
function peticion(campos)
{
alert("Rellene el campo "+campos)
}
</script>
<tr valign="top">
		<td><form name="formmodif" id="formmodif" method="post" action="not_prueba.asp" onSubmit="return comprobar()">
      <input type="hidden" name="cate_name" value="" />
	  <table width="450"  border="0" align="center" cellpadding="0" cellspacing="0" class="tb_form">
        <tr valign="top"> 
          <td><strong>Categoria</strong></td>
          <td> 
            <select name="cate" id="cate" onClick="comprobarcate()"> 
              <option value="comics">Comics 
              <option value="conciertos">Conciertos 
              <option value="discos">Discos 
              <option value="grupos">Grupos 
              <option value="juegos">Juegos 
              <option value="locales">Locales 
              <option value="peliculas">Peliculas 
              <option value="restaurantes">Restaurantes 
              <option value="salaexposiciones">Salas de Exposiciones 
              <option value="salasconciertos">Salas de Conciertos 
              <option value="teatros">Teatros
		</select></td>
			  <%
	%>
			 
		 <tr valign="top"> 
          <td height="88"><strong>Noticia</strong></td>
          <td><textarea name="txtnoticia" cols="70" rows="10" id="txtnoticia"></textarea></td>
        </tr>
      </table>
      <p> 
        <input type="reset" name="Reset" value="Borrar">
  		<input name="cmdenviar" type="button" onClick="comprobar()" value="Enviar">
		
      </p>
      <p>&nbsp;</p>
	</table></form>
	</table>
	</table>
</body>
</html>

Funciona correctamente hasta el momento del envio, puede ser algo de esto? onSubmit="return comprobar()"
  #12 (permalink)  
Antiguo 22/05/2007, 09:12
Avatar de soorellana  
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 17 años
Puntos: 0
Re: Recoger dato de lista desplegable

Te voy a hacer una pequeña demostración para veas lo facil que es.

1. Copia el siguiente cdigo, pégalo en un nuevo archivo y nómbralo formulario.html


Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Añadir Noticia</title>
</head>
<body>
	<div style="width:720px;text-align:center">
	<h1>Digita el texto de la noticia</h1>
		<form action="procesar.asp" id="frmAddNoticia" name="frmAddNoticia" enctype="application/x-www-form-urlencoded" method="post" >
		<fieldset>
		<p><textarea name="noticia" rows="8" cols="80" ></textarea></p>
		<p><select name="cate">
              <option value="comics">Comics</option> 
              <option value="conciertos">Conciertos</option>
              <option value="discos">Discos</option> 
              <option value="grupos">Grupos</option> 
              <option value="juegos">Juegos</option> 
              <option value="locales">Locales</option> 
              <option value="peliculas">Peliculas</option> 
              <option value="restaurantes">Restaurantes</option> 
              <option value="salaexposiciones">Salas de Exposiciones</option> 
              <option value="salasconciertos">Salas de Conciertos</option> 
              <option value="teatros">Teatros</option>
	      </select>
		  <input type="submit" name="submit" value="Guardar" />
		  <input type="hidden" name="variable1" value="12346" />
		  <input type="hidden" name="variable2" value="Ya ves que facil es" /></p>
		 </fieldset>
		 </form>		 
	</div>		 
</body>
</html>
2. Ahora copia el siguiente código y ponle como nombre procesar.asp

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
	Dim noticia
	Dim cate
	Dim variable1
	Dim variable2
	if request.Form("noticia")<>"" then
		noticia = replace(trim(request.Form("noticia")),vbcrlf,"<br />")
	end if
	if request.Form("cate")<>"" then
		cate = trim(request.Form("cate"))
	end if	
	if request.Form("variable1")<>"" then
		variable1 = request.Form("variable1") 
	end if		
	if request.Form("variable2")<>"" then
		variable2 = request.Form("variable2") 
	end if					
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Procesar Formulario. ASP</title>
</head>
<body>
	<h1>La noticia es la siguiente</h1>
	<h2>Cuerpo</h2>
	<%=noticia%>
	<h2>Categoria</h2>
	<%=cate%>
	<h3>Variable Oculta 1</h3>
	<%=variable1%>
	<h3>Variable Oculta 2</h3>
	<%=variable2%>
	<p><a href="formulario.html">Volver</a></p>
</body>
</html>
Ahora copia ambos archivos en tu carpeta wwwroot del IIS y dirígete a:
localhost/formulario.html para que lo compruebes.

Saludos,

Sergio.
  #13 (permalink)  
Antiguo 24/05/2007, 03:17
Avatar de Shilfild  
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Recoger dato de lista desplegable

Gracias ahora lo compruebo en el mio propio, que es uno de pruebas xD de todos modos igual tengo algún problema porque uso JScript no VBSCript x_x

Ay, por fín lo conseguí, quité la función y era solamente un submit y ya se pasa la variable correctamente, supongo que de tanto leer explicaciones me quedó mas clarito, probé y voilá xD
Muchas gracias por el interés n,n

Última edición por Shilfild; 24/05/2007 a las 03:43
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 05:56.