Modulo HTML e Javascript Conferma
-
20-09-2019 - |
Domanda
Sto avendo un problema con la presentazione di una forma e di conferma Javascript. In sostanza, il seguente JavaScript viene chiamato quando "Invia" si preme il pulsante.
function confirmation() {
var answer = confirm("Are you sure you wish to edit?")
if (answer)
{
window.location = "#editform2";
}
}
Tuttavia, quando ho colpito il annullare invece di ok, il Javascript viene eseguito correttamente, perché guardo la barra degli indirizzi e non si aggiorna alla # editform2. La forma, invece, sottopone ancora. Sembra per aggiornare la pagina. Ecco le parti pertinenti dal modulo di:
//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">
Quindi, la forma non sa dove sta andando, semplicemente aggiorna la pagina, e la pagina sembra essere il processore pure. Quindi è l'elaborazione, anche se ho cliccato annullare e l'Javascript dovrebbe tenerlo sulla stessa pagina. Oltre spostando l'elaborazione di una pagina diversa, quali sono le mie soluzioni?
Soluzione
Funziona in questo modo perché è un tasto compila e il modulo viene inviato in ogni caso. Assegnare un ID al modulo e modificare il tipo di ingresso:
<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">
e chiamare questa funzione al clic:
function confirmation() {
var answer = confirm("Are you sure you wish to edit?")
if (answer)
{
document.getElementById("formid").submit();
}
}
Altri suggerimenti
Non utilizzare l'evento onclick del pulsante di invio, utilizzare l'evento onSubmit del modulo:
document.forms[0].onsubmit = function () {
return confirm("Are you sure you wish to edit?");
}
Si consiglia di aggiungere un attributo id per il modulo per identificarlo.
Mantenere vincolante sul codice JavaScript dell'evento; Non su attributi incorporati sul tuo HTML, rende il codice più maintanable e facile per eseguire il debug.
Prova:
return answer;
alla fine della funzione e assicurarsi che il metodo onclick restituisce questo. In questo modo:
<input type="submit" value="Edit" onclick="return confirmation()">
Ciò renderebbe la funzione return false e hanno la forma non può essere pubblicato.