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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top