Comment désactiver l'action beforeunload lorsque l'utilisateur soumet un formulaire?

j'ai ce petit morceau de code:

<script>
$(window).bind('beforeunload', function() {
  $.ajax({
    async: false,
    type: 'POST',
    url: '/something'
    });
  });
</script>

je me demande, comment pourrais-je désactiver cette demande lorsque l'utilisateur appuie sur le bouton soumettre.

en gros quelque chose comme ici, donc. Lorsque vous posez une question et décidez de fermer la page, vous obtenez une fenêtre d'avertissement, mais cela ne se produit pas lorsque vous soumettez le formulaire.

20
demandé sur pawelmysior 2011-01-25 01:32:45

5 réponses

Appel unbind à l'aide de la beforeunload gestionnaire d'événement:

$('form#someForm').submit(function() {
   $(window).unbind('beforeunload');
});

pour éviter que le formulaire ne soit présenté, ajouter la ligne suivante:

   return false;
35
répondu Jacob Relkin 2014-04-06 20:51:49

Utiliser

$('form').submit(function () {
    window.onbeforeunload = null;
});

assurez-vous d'avoir ceci avant de soumettre la fonction principale! (le cas échéant)

18
répondu Parham 2017-05-30 14:24:31

c'est Ce que nous utilisons:

sur le document ready nous appelons la fonction beforeunload.

$(document).ready(function(){
    $(window).bind("beforeunload", function(){ return(false); });
});

avant tout soumettre ou emplacement.rechargement de nous séparer de la variable.

$(window).unbind('beforeunload');
formXXX.submit();

$(window).unbind("beforeunload"); 
location.reload(true);
0
répondu David 2014-08-28 09:14:11

à la recherche de Detect onbeforeunload for ASP.NET application web, Je dois afficher un message d'avertissement si le contrôle d'entrée change sur la page en utilisant ASP.NET avec page principale et Pages de contenu. J'utilise 3 espaces réservés au contenu sur la page principale et le dernier est après le formulaire

<form runat="server" id="myForm">

donc, après l'étiquette de fermeture du formulaire et avant l'étiquette de fermeture du corps utilisé ce script

<script>
        var warnMessage = "Save your unsaved changes before leaving this page!";
        $("input").change(function () {
            window.onbeforeunload = function () {
                return 'You have unsaved changes on this page!';
            }
        });
        $("select").change(function () {
            window.onbeforeunload = function () {
                return 'You have unsaved changes on this page!';
            }
        });
        $(function () {
            $('button[type=submit]').click(function (e) {
                window.onbeforeunload = null;
            });
        });
    </script>

avant chargement ne fonctionne pas de manière fiable de cette façon, en ce qui concerne la reliure va. Vous devez lui attribuer nativement

donc je l'ai fait fonctionner comme ce bind et unbind n'a pas fonctionné pour moi aussi avec jQuery 1.7 onward l'API event a été mise à jour, .lier./)(unbind () est toujours disponible pour la compatibilité ascendante, mais la méthode préférée est d'utiliser les fonctions on ()/off ().

0
répondu dnxit 2014-09-10 06:06:26
 <!DOCTYPE html>
 <html>
  <head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script type="text/javascript" src="http://cdn.jsdelivr.net/jquery.dirtyforms/2.0.0-beta00006/jquery.dirtyforms.min.js"></script>
  <script type="text/javascript">
    $(function() {
        $('#form_verify').dirtyForms();
    })
  </script>
  <title></title>
 <body>
<form id="form_verify" action="a.php" method="POST">
    Firt Name <input type="text">
    Last Name <input type="file">
    <input type="submit">   
</form>

0
répondu Anup Panwar 2015-10-20 20:04:19