Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Diciembre 05, 2008, 10:19:47
Inicio Ayuda Buscar Ingresar Registrarse
Noticias: Foro de Java, C++ y más.

Nuevo foro de Control de versiones.

+  Foros Java y C/Linux
|-+  Programación Web
| |-+  Javascript
| | |-+  Problema con reset
« anterior próximo »
Páginas: [1] Enviar tema Imprimir
Autor Tema: Problema con reset  (Leído 553 veces)
juanper1
Newbie
*
Mensajes: 18


Ver Perfil


« en: Junio 17, 2008, 10:13:33 »

Hola

Tengo un problema al resetear un formulario, y ni siquiera entiendo el comportamiento que sucede. Te explico.

Tengo un form con unos campos donde uno de ellos está definido como

public class ModificacionDatosUsuarioForm extends ValidatorForm {
     private boolean js;
                               ....................



En la jsp tengo escrito esto:

<head>
<html:javascript formName="modificacionDatosUsuarioForm"/>
<script language="JavaScript">

// Inicialización
function restablecer() {
     alert (document.modificacionDatosUsuarioForm.js.value);
     document.modificacionDatosUsuarioForm.js.value = true;
     document.modificacionDatosUsuarioForm.conf.value = "";
     document.modificacionDatosUsuarioForm.conf.disabled = true;
     alert (document.modificacionDatosUsuarioForm.js.value);
}

// Comprobación de valor de campo (función sólo de prueba)
function comprobar() {
     alert (document.modificacionDatosUsuarioForm.js.value);
}
</script>
</head>


<body onload="restablecer();">

<%-- Si javascript está deshabilitado, muestro mensaje --%>
<logic:messagesPresent message="true" property="jsError">
<div class="centrar">
<html:messages id="msgJs" message="true" property="jsError" header="errors.header" footer="errors.footer">
<bean:write name="msgJs"/>
</html:messages>
</div>
</logic:messagesPresent>

<html:errors/>

<html:form action="/modificarDatosUsuario" method="POST" onsubmit="return validateModificacionDatosUsuarioForm(this);" onreset="restablecer();">
<div class="centrar">
<table class="formulario" height="360">
<tr>
<td>
<table width="100%">
<tr>
<td width="10%" height="50"> </td>
<td width="23%" height="50"> </td>
<td width="67%" height="50">
<html:hidden property="js" value="false"/>

                        ................

<table width="100%">
<tr>
<td width="33%" height="100">
<div class="centrar">
<html:submit onclick="comprobar();">
<bean:message key="button.submit"/>
</html:submit>
</div>
</td>
<td width="33%" height="100">
<div class="centrar">
<html:reset>
<bean:message key="button.reset"/>
</html:reset>
</div>
</td>
<td width="33%" height="100">
<div class="centrar">
<html:cancel>
<bean:message key="button.cancel"/>
</html:cancel>
</div>
</td>
</tr>
</table>

.........



Vamos a ver! La idea de todo esto es que el campo "js" sea oculto y de inicio con valor false, y que al cargar la página se ejecute el javascript "restablecer()", que es la función que pone los valores por defecto que yo deseo y donde "js" lo pongo ya a true. El comportamiento según las salidas de alert hasta ahí es correcto: primero muestra false y después true. Si se pulsa entonces aceptar no hay ningún problema, puesto que el alert de "comprobar()" sigue mostrando true para el valor de "js" y se va a la action correspondiente donde se ejecuta su lógica.

El problema ocurre cuando le doy al reset, donde se ejecuta de nuevo "restablecer()" con idéntica salida, pero al pulsar entonces aceptar, la salida de "comprobar()" no sé por qué ahora es false para "js" (cuando previamente acababa de ser true y no hago nada más). Se va a la action, y de ahí se retorna de nuevo a la jsp porque el valor de "js" es false y ese es el comportamiento adecuado en ese caso. Se mostraría un mensaje de error a través de html:errors (el mensaje de logic:messagesPresent)

Gracias
En línea
Páginas: [1] Enviar tema Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!