validacion - Formulario HTML y confirmación de Javascript
validar formulario php antes enviar (3)
Funciona de esta manera porque es un botón de sumbit y el formulario se envía en todos los casos. Asigna una identificación al formulario y cambia el tipo de entrada:
<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">
y llame a esta función al hacer clic:
function confirmation() {
var answer = confirm("Are you sure you wish to edit?")
if (answer)
{
document.getElementById("formid").submit();
}
}
Tengo un problema al enviar un formulario y la confirmación de Javascript. Básicamente, se llama al siguiente Javascript cuando se presiona el botón "enviar".
function confirmation() {
var answer = confirm("Are you sure you wish to edit?")
if (answer)
{
window.location = "#editform2";
}
}
Sin embargo, cuando pulso cancelar en lugar de aceptar, el Javascript se ejecuta correctamente, porque miro la barra de direcciones y no se actualiza a # editform2. El formulario, sin embargo, aún se envía. Parece actualizar la página. Aquí están las partes relevantes del formulario:
//Form is encoded in PHP
<form method=/"post/">
//Form is in here
<input type=/"submit/" value=/"Edit/" onclick=/"confirmation()/">
Entonces, el formulario no sabe a dónde va, solo actualiza la página, y la página también es el procesador. Así que está procesando aunque hice clic en 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?
No use el evento onclick del botón de enviar, use el evento onsubmit de su formulario:
document.forms[0].onsubmit = function () {
return confirm("Are you sure you wish to edit?");
}
Es posible que desee agregar un atributo de identificación a su formulario para identificarlo.
Mantener el enlace de eventos en el código JavaScript; no en los atributos en línea en su HTML, hace que su código sea más fácil de mantener y depurar.
tratar:
return answer;
al final de la función y asegúrese de que el método onclick lo devuelva. Al igual que:
<input type="submit" value="Edit" onclick="return confirmation()">
Esto haría que la función devuelva falso y que no se publique el formulario.