2017-05-10 1 views
0

J'utilise l'étiquette <a> suivante pour afficher une confirmation simple. Toutefois, lorsque je clique sur le bouton Annuler, la méthode de publication est toujours exécutée. D'après ce que je comprends, avoir le return en face de confirmer devrait provoquer le formulaire de ne pas poster si le bouton Annuler est cliqué. J'ai ce code à la fin de la page mais je ne pense pas que cela ait quelque chose à voir avec le problème. Je ne pensais pas qu'il déclencherait l'événement click lors de la sélection de Cancel dans la boîte de dialogue Confirmer.Confirmer l'affichage de la boîte de dialogue sur le bouton Annuler?

Cela prend juste les valeurs dans l'action de données et la valeur de données et les stocke dans un champ caché. Ceci est fait sur un clic auquel il ne devrait pas arriver.

@section scripts { 
    <script> 
    $(document).ready(function() { 
     // Hook events on buttons and anchors 
     buildClickEvents(); 
    }); 

    // Hook events on buttons and anchors 
    function buildClickEvents() { 
     $("[data-potr-action]").on("click", function (e) { 
     e.preventDefault(); 

     $("#EventCommand").val(
      $(this).data("potr-action")); 

     $("#EventArgument").val(
      $(this).attr("data-potr-val")); 

     $("form").submit(); 
     }); 
    } 
    </script> 
} 

Répondre

0

Pour répondre à votre question, aucune confirmation ne bloque le formulaire. Il retourne vrai si pressé "OK" ou faux si pressé le bouton "Annuler". Voir ce billet depuis W3c

Qu'est-ce que vous pourriez est comme ci-dessous:

function buildClickEvents() { 
    $("[data-potr-action]").on("click", function (e) { 
    e.preventDefault(); 
    var result = confirm('Are you sure you want to delete this Request?'); 
    if(result == false){ 
     return; 
    } 
    $("#EventCommand").val(
     $(this).data("potr-action")); 

    $("#EventArgument").val(
     $(this).attr("data-potr-val")); 

    $("form").submit(); 
    }); 
} 

et retirez le dessous d'un tag:

onclick="return confirm('Are you sure you want to delete this Request?');" 
0
$("[data-potr-action]").on("click", function (e) { 
    if(confirm("your message")){ 
     $("#EventCommand").val(
      $(this).data("potr-action")); 

     $("#EventArgument").val(
      $(this).attr("data-potr-val")); 

     $("form").submit(); 
    } 

    e.preventDefault(); 


    }); 
+0

était sur le point d'afficher le même. Veillez également à supprimer l'attribut onclick de la balise HTML – ChrisC

+0

Cela fonctionne si j'ai seulement un bouton de suppression dans mon formulaire, mais dans ce cas, j'ai à la fois un bouton Filtre et un bouton Supprimer. C'est pourquoi il existe une valeur data-action. Sur submit, cette valeur est définie dans une valeur masquée, puis transmise à la méthode Post. Dans la méthode post j'utilise une instruction switch pour regarder la valeur est. Si c'est "filtre", il fait une chose, si c'est "supprimer", il en fait une autre. Je fais cela basé sur un blog de Paul Sheriff. – Caverman