| Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS | ||||
11/12/02 - Este artículo viene a ampliar una FAQ de las que mantenemos en la sección de FAQs de DesarrolloWeb.com. La pregunta en concreto que nos realizó el usuario era cómo hacer un formulario que, al enviarlo, nos pregunte si realmente se desea enviar.
La pregunta en concreto era la siguiente:
Estoy haciendo un formulario y deseo que, al enviarlo, me muestre una ventana de confirmación de envío del formulario, de esas que tienen un botón de aceptar y otro de cancelar. Entonces, si se acepta el envío, se enviaría el formulario.... si no se acepta, que el formulario no se envíe.
Respuesta
Esto tiene mucho que ver con el tema de tratamiento de formularios. La respuesta basa su mayor técnica en el hecho de sustituir el botón de submit por un botón normal. Con el botón normal no se envía el formulario directamente sino que se llama a una función que realiza la confirmación y, en caso positivo, envía el formulario.
El botón que colocaríamos en el formulario en sustitución del botón de submit sería el siguiente:
<input type=button onclick="pregunta()" value="Enviar">
Nos fijamos en que el botón tiene definida una acción en el momento que se hace clic. La acción en concreto hace que se ejecute la función pregunta(), que será la que realice la confirmación y envíe el formulario en caso positivo. Su código se puede ver a continuación.
<script language="JavaScript">
function pregunta(){
if (confirm('¿Estas seguro de enviar este formulario?')){
document.tuformulario.submit()
}
}
</script>
La caja confirm devuelve true o false dependiendo de si se pulsa el botón de aceptar o cancelar. Ese valor se utiliza en un enunciado if para decidir si se envía el formulario, con su método submit(), o no se hace nada.
El código completo de una página que realiza esta tarea en un formulario es el siguiente:
<html>
<head>
<title>Confirmación de envío de formulario</title>
<script language="JavaScript">
function pregunta(){
if (confirm('¿Estas seguro de enviar este formulario?')){
document.tuformulario.submit()
}
}
</script>
</head>
<body>
<form name=tuformulario action="http://www.desarrolloweb.com">
<input type="text" name="cualquiercampo">
<input type=button onclick="pregunta()" value="Enviar">
</form>
</body>
</html>
El ejercicio se puede ver en marcha aquí.
| Autoría, licencia y acciones sobre este artículo | ||||||
|
Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright. * Para consultas técnicas utilizar la lista de correo.
|
| Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar. |
| Se muestran 10 comentarios revisados |
RESPUESTA
Si pongo un botón normal en lugar de uno tipo submit no es por antojo. Cuando se utiliza el método onsubmit() ya se ha mandado el formulario o, más bien, se va a mandar inmediatamente, independientemente de lo que hagamos en la función que llamemos al saltar el evento.
Así pues, si colocamos un botón de submit en lugar del botón normal y el evento onsubmit en la etiqueta del formulario, que llama a la misma función... lo que pasará es que el formulario se enviará de todos modos, aunque apretemos cancelar para supuestamente evitar el envío.
He aqui el código..
function pregunta(){
if !(confirm('¿Estas seguro de enviar este formulario?')){
return false; }
}
-----------------------------
En el FORM de HTML pondríamos:
<form action="nueva.php" method="post" target="_self" ONSUBMIT="return pregunta();">
ojo, si no incluimos el return se envia sea cual sea la opción seleccionada.
En la siguiente pagina miraba el value del submit, y dependiendo de su valor realizaba una opcion u otra.
El segundo caso me ha permitido mantener este codigo sin alterar nada de la segunda pagina.
| Añadir un comentario del artículo |
| Enlaces: |
| Maestrosdelweb |
Lectura recomendada Compra este libro en Agapea, la librería urgente a domicilio. |
||||||||
Tienda DesarrolloWeb