Question

Je suis un problème avec la présentation d'un formulaire et confirmation Javascript. Fondamentalement, le Javascript suivant est appelé lorsque le bouton « Envoyer » est pressée.

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

Cependant, quand je frappe la cancel au lieu de ok, le Javascript exécute correctement, parce que je regarde la barre d'adresse et il ne met pas à jour # editform2. La forme, soutient toutefois encore. Il semble rafraîchir la page. Voici les parties pertinentes de la forme:

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

Ainsi, le formulaire ne sait pas où il va, il rafraîchit seulement la page, et la page se trouve être le processeur aussi bien. Il est donc le traitement même si je cliqué et annuler le Javascript should le garder sur la même page. En plus de déplacer le traitement à une autre page, quelles sont mes solutions?

Était-ce utile?

La solution

Il fonctionne comme ceci parce qu'il est un bouton Sumbit et le formulaire est soumis dans tous les cas. Assigner un identifiant de la forme et de changer le type d'entrée:

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

et appeler cette fonction clic:

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

Autres conseils

Ne pas utiliser l'événement onclick du bouton soumettre, utilisez l'événement onsubmit de votre formulaire:

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

Vous pouvez ajouter un attribut id à votre formulaire pour identifier.

Garder événement de liaison sur le code JavaScript; pas sur les attributs de ligne sur votre HTML, rend votre code plus maintanable et facile à déboguer.

essayer:

return answer;

à la fin de la fonction et assurez-vous que la méthode onclick retourne cela. Comme ceci:

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

Cela rendrait la fonction return false et avoir la forme ne soit pas affiché.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top