Frage

ich habe ein Problem mit einer Form und Javascript Bestätigung einreichen. Grundsätzlich ist die folgende Javascript aufgerufen wird, wenn die Schaltfläche „Senden“ gedrückt wird.

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        window.location = "#editform2";
    }
}

Allerdings, wenn ich traf die statt ok abbrechen, führt die Javascript richtig, weil ich die Adressleiste sehen und es nicht aktualisiert zu # editform2. Die Form, aber macht immer noch. Es scheint, die Seite zu aktualisieren. Hier sind die relevanten Teile aus der Form:

//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">

So ist die Form nicht weiß, wohin es geht, es erfrischt nur die Seite und die Seite geschieht der Prozessor als auch zu sein. So ist es Verarbeitung obwohl klickte ich stornieren und die Javascript sollte es auf der gleichen Seite halten. Neben der Verarbeitung zu einer anderen Seite zu bewegen, was sind meine Lösungen?

War es hilfreich?

Lösung

Das funktioniert so, weil es eine sumbit Taste ist, und die Form wird in jedem Fall vorgelegt. Vergeben Sie eine ID in das Formular und ändern Sie den Eingabetyp:

<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">

und rufen Sie diese Funktion auf Klick:

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        document.getElementById("formid").submit();
    }
}

Andere Tipps

Verwenden Sie nicht das OnClick-Ereignis der Schaltfläche einreichen, verwenden Sie das onsubmit Ereignis des Formulars:

document.forms[0].onsubmit = function () {
    return confirm("Are you sure you wish to edit?");
}

Sie können ein id-Attribut zu Ihrem Formular hinzufügen, um ihn zu identifizieren.

Keeping Ereignisbindung auf JavaScript-Code; nicht auf Inline auf Ihre HTML-Attribute, macht den Code maintanable und einfach zu debuggen.

versuchen:

return answer;

am Ende der Funktion und stellen Sie sicher, dass die Methode OnClick diese zurückgibt. Wie so:

<input type="submit" value="Edit" onclick="return confirmation()">

Dies würde die Funktion return false machen und haben das Formular nicht veröffentlicht werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top