Formulario HTML y Javascript Confirmación
-
20-09-2019 - |
Pregunta
Estoy teniendo un problema con la presentación de un formulario de confirmación y Javascript. Básicamente, el siguiente Javascript se llama cuando "Enviar" se pulsa el botón.
function confirmation() {
var answer = confirm("Are you sure you wish to edit?")
if (answer)
{
window.location = "#editform2";
}
}
Sin embargo, cuando pulso el botón Cancelar en vez del bien, el código JavaScript se ejecuta correctamente, porque observo la barra de direcciones y no se actualiza a # editform2. La forma, sin embargo, todavía se somete. Parece que actualizar la página. He aquí las partes pertinentes de la forma:
//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">
Así que la forma no sabe a dónde va, sólo se actualiza la página y la página pasa a ser el procesador también. Así que es procesado a pesar de que he hecho clic cancelar y el Javascript debería mantenerlo en la misma página. Además de mover el procesamiento a una página diferente, ¿cuáles son mis soluciones?
Solución
Funciona así porque es un botón Sumbit y se envía el formulario en todos los casos. Asignar una ID a la forma y cambiar el tipo de entrada:
<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">
y llamar a esta función de clic:
function confirmation() {
var answer = confirm("Are you sure you wish to edit?")
if (answer)
{
document.getElementById("formid").submit();
}
}
Otros consejos
No utilizar el evento onclick del botón de enviar, utilizar el evento onsubmit de su formulario:
document.forms[0].onsubmit = function () {
return confirm("Are you sure you wish to edit?");
}
Es posible que desee añadir un atributo id a su forma de identificarlo.
Mantener vinculante sobre el código JavaScript evento; no en atributos integrados en tu HTML, hace que el código sea más fácil de maintanable y depuración.
intento:
return answer;
al final de la función y asegúrese de que el método onclick vuelve este. De esta manera:
<input type="submit" value="Edit" onclick="return confirmation()">
Esto haría que la función de retorno falsas y tienen la forma no será publicada.