Llenar forma según selección de lista .

No he podido encontrar una buena solución.
La idea es que tengo una forma.
Inicialmente tengo una lista de usuarios, según el usuario que seleccione debo llenar los demás campos que están en la misma forma.
La pregunta seria, como puedo conocer el valor que escogió de la lista,
para poder seleccionar según este valor los datos que se asignaran a la forma.
Agradedzco cualquier ayudita...

1 Respuesta

Respuesta
1
Ah! Mezclando con JSP!, ok.
1.- No puedes pasar variables de js a jsp de manera directa en la misma página...
Si quieres hacer eso, tienes que recargar la página pasándole por parámetro el valor del select :)
Haces algo así:
<%
if(request.getParameter("seleccion")==null){
//no viene parametro, luego tienes que poner el html para cogerlo...
%>
HTML y js que te meta en la variable de js "pepe" lo que elija el cliente
Puedes hacer un formulario que se envíe a si mismo o un link a la propia página añadiendo el parámetro:
self.location+="?seleccion="+pepe;
<%
}else{//te viene el parametro...
%>
Sacas los datos del usuario
<%}%>
¿Entiendes el esquema?
Mira existe un problema porque el self. location va a quedar con todo si vuelven a escoger algo en la lista .
es decir: ...?seleccion=page?seleccion=page?seleccion=page
estoy trtando de que lo borre.
Mira lo que he hecho.
Te adjunto lo que hice.
<script>
function obtenerDatosUsuario(idUsuario){
var identificador
var prueba
var cadena
cadena="Gina?Alexandra";
identificador = idUsuario.value;
alert("ENVIARE"+identificador);
/* prueba = cadena.indexOf("3",0);
alert("PRUEBA "+prueba);*/
prueba = self.location;
if ( prueba.indexOf("3",0) != -1 ){
self.location += "?listaUsuarios=" + idUsuario.value;
}else{
cadena = self.location;
self.location = "";
self.location = cadena + "?listaUsuarios=" + idUsuario.value;
}
alert("LOCATION + " + self.location);
}
</script>
<body>
<!---<%if(request.getParameter("listaUsuarios")==null){ %>--->
<form name="form1" method="post" action="ejercicio1.cfm">
<select name="listaUsuarios" onChange="obtenerDatosUsuario(form1.listaUsuarios);">
<option value="Gina">Gina
<option value="Alexandra">Alexandra
<option value="Adriana">Adriana
</select>
<input type="text" name="nombre">
<!---<%}else{
idUsuario = request.getParameter("listaUsuarios");
usuario = obtenerUsuario(idUsuario);
--->
<!---<%}%>--->
</form>
</body>
</html>
Mejor que responderte yo, creo que te puede venir bien verlo en:
http://www.webestilo.com/javascript/js31.phtml
;)
Bien te agradezco, pero creo que no explique bien.
La idea es: se escoge un valor de la lista OK.
Tengo que obtener el valor que escogió de la lista.
Con este valor debo consultar (dinámicamente) los datos que voy a poner en los demás campos de la forma.
Ejemplo lista: 1,2,3.
Si escoges 1.
Consulto el usuario de id 1.
Traigo sus datos y estos datos son los que enviare a un javascript para que cambie el contenido de los demás campos de la forma.
No se si ahora me explique mejor.
Resumiendo : necesito alguna forma en que yo pueda capturar el valor que selecciono de la lista y asignarlo a una variable en lo que sea ejemplo
Jsp una variable x = form1.lista.value
ColdFusion <cfset x= form1.lista.value>
Esta asignación no la hago a una variable de Javascript sino a otro tipo de variable.
Es como cuando uno asocia a el evento submit que en el siguiente archivo uno puede tener acceso al contenido de la forma mediante request.getParameter(...)
Que hubiera algo que pudiera usar como ese request.get... pero en la misma página
Ayudame por fis...
Ok, te agradezco mucho tus prontas respuestas.
No entiendo muy bien lo que me dices.
Creo que lo que me dices es:
Poner en el action de la forma referencia a la misma página es decir
/*Nombre pagina ejercicio1.jsp*/
<form name="form1" method="post" action="ejercicio1.jsp">
/*esto en cambio del self.location*/
Si es así.
Pero no estoy segura que me funcione,
porque el evento asociado es onchange en la lista y creo que no me hace submit del formulario.
Creo que si aquí llamo a un javascript en el cual haga un document.form1. submit(); funciona.
¿Cierto? Cuéntame
Ademas tengo otros botones en la misma forma que son los que me darán el action.
Lo que yo hice me quedo como te mostré en el anterior y el script me quedo algo así:
<script>
function obtenerDatos(idUsuario){
self.location += "?listaUsuarios=" + idUsuario.value;
document.form1.submit();
}
/*Seria cambiar esto por el solo submit*/
function obtenerDatos(url){
document.form1.submit();
document.form1.action=url;
}
Sin necesidad de pasar el atributo por parametro es decir en el url ?variable..
</script>
Lo que sigue. Lo que ya viste.
Cuéntame...
¿Qué pena lo intensa? Pero es que estoy muy colgada.
Y desde donde estoy no puedo probar.
Bendiciones.
Me alegro de que entendieras el esquema y lo hayas hecho asi; me gusta ver que la gente me entiende :)
Pero hay algo que no entiendo en como lo haces, y tal vez sea culpa mía... Esa función de javascript no la necesitas. Envía el formulario a la propia página, donde ya tienes el request. GetParameter()...
Es decir, con esto:
<html>
<head>
<title>:)</title>
</head>
<body>
<!---<%if(request.getParameter("listaUsuarios")==null){ %>--->
<form name="form1" method="post" action="ejercicio1.cfm">
<select name="listaUsuarios" onChange="obtenerDatosUsuario(form1.listaUsuarios);">
<option value="Gina">Gina
<option value="Alexandra">Alexandra
<option value="Adriana">Adriana
</select>
<input type="text" name="nombre">
<!---<%}else{
idUsuario = request.getParameter("listaUsuarios");
usuario = obtenerUsuario(idUsuario);
--->
<!---<%}%>--->
</form>
</body>
</html>
Ya debería funcionarte, si es que la página se llama ejercicio1. Cfm, que es a donde se envía el formulario. En caso de que no fuese así, envía el formulario a la propia página.
Espero que te ayude y si no, pregunta de nuevo.
Ok. Muchas gracias.
Ayer implemente lo que creí me habías sugerido y conseguí entender y hacerlo de una forma muy sencilla realmente.
Me complace mucho tener este tipo de recursos y agradezco mucho lo "buen experto " que eres.
Bye. Muchas Bendiciones.
Ok, pensemos en una cosa, tratare de explicarlo todo desde el principio.
<%
if(request.getParameter("pepe")==null){
/*
si no tienes ningun parametro...
*/
%>
<form action="la_propia_pagina" mehtod="post" name="form">
<select name="pepe" onChange="this.document.form.submit()">
<option value="Gina">Gina
<option value="Alexandra">Alexandra
<option value="Adriana">Adriana
</select>
</form>
/*
Este formulario debería enviarse con el onChange, y el valor seleccionado pasa a la propia página (por ponerla en el action...) por post, de modo que cuando se recargue la página, ya tiene en el request. GetParameter("pepe") el valor elegido. El parámetro no pasa por la url, sino por post en el formulario directamente, por eso no necesitas un javascript que te ponga el parámetro en la url...
*/
<%}else{
/*
Aquí ya tienes el parámetro no nulo con el valor elegido en el select, por lo que llamas a la función java con el parámetro.
*/
idUsuario = request.getParameter("listaUsuarios");
usuario = obtenerUsuario(idUsuario);
%>
¿Te queda claro así?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas