Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > HTML, Javascript y otros
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 19
elcigarra Va por buen camino
Reset y submit en un botón

Amigos, tengo un formulario que pasa a una página php que "hace cosas" y manda un saludo... bueno, clásico.

El caso es que muchos de los visitantes de mi página repiten (envían) el formulario más de una vez. Le dije a un amigo que probara esa parte del sitio y me comentó que después del saludo fue a la página anterior (la del formulario) y como estaban todos los datos que el había puesto, por un momento le quedó la duda de si el formulario se había mandado efectivamente.

¿Hay alguna forma de que antes de enviarse, el formulario se resetee?. Algo como poner un boton de Reset y Submit al mismo tiempo.
Responder Con Cita
  #2  
Antiguo 10-12-2006
Avatar de JavierB
JavierB JavierB is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 99
Poder: 22
JavierB Va por buen camino
Hola elcigarra

Tienes dos posibilidades, utilizar un botón normal de esta forma:

Código:
<input type="button" value="Enviar" onclick="this.form.submit(); this.form.reset()" />
o dehabilitar el botón submit para que no se pueda volver a pulsar:

Código:
<input type="submit" onclick="this.disabled=true" />
Saludos, :adios:
__________________
Lo importante no es saber, sino tener el e-mail del que sabe.
Responder Con Cita
  #3  
Antiguo 11-12-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Cita:
Empezado por javierB
Tienes dos posibilidades, utilizar un botón normal de esta forma:

Código:
<input type="button" value="Enviar" onclick="this.form.submit(); this.form.reset()" />
No lo he probado pero no parece una solución válida, me parece que enviará un formulario vacio.

Cita:
Empezado por javierB
o dehabilitar el botón submit para que no se pueda volver a pulsar:

Código:
<input type="submit" onclick="this.disabled=true" />
Tampoco tengo claro que esto funcione, ya que tu problema es al volver y no se si el estado del boton permanecerá desactivado.

La solución que yo te propongo es más complicada que estas dos y no la he probado por lo que no se si funcionará:
La idea es hacer tantos INPUTs ocultos como INPUTs visibles hayan, una vez se pulsa el botón de enviar y con javascript copias el contenido de los inputs visibles en los inputs ocultos, borras el contenido de los inputs visibles y envias el formulario.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #4  
Antiguo 11-12-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues luego de probar con varias cosas, por ejemplo tratar de que la página del formulario no fuera guardada en el caché del navegador... sin resultado, se me ocurrió una solución que acaso no sea muy elegante, pero, en fin, parecía funcionar... como no podía ser de otro modo:

Código:
  <script type="text/javascript">
  
  function LimpiarFormulario(idFormulario) {
    return;
    frm = document.getElementById(idFormulario);
    if(frm) {
      for (i = 0; i < frm.elements.length; i++) {
        if(frm.elements[i].type === 'text')
          frm.elements[i].value = '';
      } 
      return true;    
    }
    return false;
  }
  
  </script>
Efectivamente, ejecutar la función "LimpiarFormulario" cada que se cargara la página Web: utilizando el evento "OnLoad" de "BODY".

Pero, resulta que probé después lo que el compañero JavierB propone, esto es, algo así:

Código:
<input type="button" onclick="this.form.submit(); this.form.reset();" value="Enviar" />
Y la cosa también parece funcionar como se espera. He hecho pruebas y los datos del formulario se envían pero este se "resetea" al cabo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 11-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo acabo de probar esta opción y me envía correctamente el formulario, pero al darle al botón BACK, ahí siguen los datos...

... en IE, porque en FF sí desaparecen.

// Saludos
Responder Con Cita
  #6  
Antiguo 11-12-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues toma ya... así es la verdad que sólo probé el asunto en Firefox... mal hecho, puesto que no hubiera funcionado en Internet Explorer (¿Entre cuántos más?)... gracias Román. Y en todo caso, ¿qué nos queda? ¿Recorrer los controles del formulario y borrar el contenido de las casillas de texto?

Acaso también pudiera controlarse mediante una variable "de sesión" que el mismo usuario no enviara el formulario más de dos veces en la misma sesión... guardando en la variable de sesión su IP, por ejemplo... es lo que se me ha ocurrido al principio también, pero, al final no seguí por ese camino.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 11-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
dec, ¿qué LimpiarFormulario no podría simplificarse así?

Código:
function LimpiarFormulario(idFormulario)
{
  frm = document.getElementById(idFormulario);
  if (frm)
  {
    frm.reset();
  }
}
// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Simular click en submit(imagen) de formularios web RazoR Internet 9 17-03-2011 18:31:07
Transacción interrumpida por reset Kafu Firebird e Interbase 2 20-04-2005 14:26:31
parametros en un boton vetustas Conexión con bases de datos 2 06-11-2003 14:24:48
Jpg en un botón Novás Varios 3 30-10-2003 15:40:09
Controles de un boton... Tanix Varios 6 03-06-2003 09:56:08


La franja horaria es GMT +2. Ahora son las 05:29:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi