Mostrar cosas distintas en campo text según select

Hola!
Tengo un formulario que va a permitir a un usuario crear, abrir y eliminar carteras con 4
campos:
* Identificador de cartera: campo select que muestra "Nueva cartera" por defecto y una
lista de todas las carteras que posee el usuario
* Identificador nueva cartera: campo text sólo activado si el anterior está establecido en
"Nueva cartera". En caso contrario está desactivado
* Entidad gestora: campo text siempre activado cuyo valor depende del primer campo, estando vacío con "Nueva cartera", o conteniendo la entidad gestora que corresponde a la cartera seleccionada. En este último caso permito modificarla también. Realmente representa la entidad gestora que gestiona cada cartera.
* Abrir cartera / Borrar cartera: campo tipo radio donde "Borrar cartera" estará desactivado
con "Nueva cartera"
Explicada la situación, todo esto es dinámico usando javascript, lo cual consigo con el siguiente código excepto una cosa:
function habilitarCamposAdmonCarteras() {
   if (document.admonCarterasForm.idCart.value == "nuevCart") {
      document.admonCarterasForm.idNuevCart.disabled = false;
      document.admonCarterasForm.operacCart[1].disabled = true;
      document.admonCarterasForm.entGest.value = "";
   } else {
      document.admonCarterasForm.idNuevCart.disabled = true;
      document.admonCarterasForm.operacCart[1].disabled = false;
      document.admonCarterasForm.entGest.value = ¿?;
   }
}
El formulario en cuestión se llama "admonCarterasForm", y el aspecto en el que necesito
ayuda en donde figura "¿?"
Para cargar la lista de las carteras que posee el usuario en el select, tengo este código:
<html:select property="idCart" onchange="javascript:habilitarCamposAdmonCarteras();" value="nuevCart">
   <html:option value="nuevCart">Nueva cartera</html:option>                           
   <html:optionsCollection name="usuarioContainer" property="cartGlob.carteras" value="idCartera" label="idCartera"/>
</html:select>
Como puede verse, tengo un bean guardado en la sesión del usuario llamado "usuarioContainer", el cual posee un objeto llamado "cartGlob", y éste a su vez tiene almacenado una lista con todas las carteras del usuario llamada "carteras". Cada uno de los elementos de esta lista es otro bean (que representa cada Cartera individual) con el que, a través de "idCartera" obtengo el nombre de la cartera, y a través
de "entGest" obtendría el nombre de la entidad gestora.
¿Cómo consigo, teniendo en cuenta este almacenamiento, que el nombre de la entidad gestora cambie dinámicamente al modificar en el campo select del formulario el identificador de cartera?
Espero haberme explicado bien
Un saludo y gracias

1 Respuesta

Respuesta
1
Por supuesto que te explicaste bien... Bueno en cuanto a tu problema hay dos posibles soluciones:
1- Al seleccionar un valor en el select enviar el form al servidor con el idCartera y traer los datos de la misma y cargarlos en la interfaz, que supongo que es lo que no quieres hacer.
2- La otra solución que a mi se me ocurre es que en el value da cada option del select coloques ademas del idCartera el nombre de la entidad gestora usando algún tipo de formato, algo como: "idCartera" + ":" + "entidadGestora" y de esa forma en el else de la función habilitarCamposAdmonCarteras() podrías hacer un substring del value del campo idCartera para obtener el nombre de la entidad gestora. No se si me explique... pero eso es lo que se me ocurre.
Bueno amigo juanper1 espero que te sirva mi idea y si te sirvió o no por favor te pido que no olvides finalizar la pregunta.
Hola!
Siento haber tardado algo en contestar, pero he estado de viaje aparte de no tener red en
casa y acceder desde una biblio. Además estos días era imposible responder.
Ya he mirado tus posibles
Opciones. La primera la he descartado desde el principio, y sobre la segunda tengo dudas y
dificultades, porque al variar el valor de value en name="usuarioContainer" property="cartGlob.carteras" value="idCartera" label="idCartera"/>,
me da la excepción (lógico por otra parte) "javax.servlet.jsp.JspException: No getter
method available for property "loquesea" for bean under name proyecto.vo.CarteraVO@1a28182".
¿No es posible acceder a lo que deseo usando javascript? Quizá una buena idea sería un
select oculto, pero eso no es posible, ¿verdad?
Gracias
Bueno si es posible usar un select oculto pero no es muy practico, me parece más practico usar un array en javascript que contenga todas las entidades gestoras de cada cartera, seri algo como una matriz con la siguiente estructura:
[idCartera1][entidadGestora1][entidadGestora2] ... [entidadGestora-n]
[idCartera2][entidadGestora1][entidadGestora2] ... [entidadGestora-n]
...
[idCartera-n][entidadGestora1][entidadGestora2] ... [entidadGestora-n]
Después de crear esta matriz sera fácil desde javascript cargar el select de entidades gestoras con las entidades de acuerdo al id de cartera ingresado... no si me explique bien.
Bueno ese es mi consejo, espero que te sirva y por favor no olvides finalizar la pregunta.
Lo probaré este fin de semana y ya te diré, ¿vale?
Gracias
Ok, pero

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas