J'ai ce petit morceau de code:
<script>
$(window).bind('beforeunload', function() {
$.ajax({
async: false,
type: 'POST',
url: '/something'
});
});
</script>
Je me demande comment je pourrais désactiver cette demande lorsque l'utilisateur clique sur le bouton d'envoi.
Fondamentalement, quelque chose comme ici, sur SO. 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.
Appelez unbind
à l'aide du gestionnaire d'événements beforeunload
:
$('form#someForm').submit(function() {
$(window).unbind('beforeunload');
});
Pour empêcher la soumission du formulaire, ajoutez la ligne suivante:
return false;
Utilisation
$('form').submit(function () {
window.onbeforeunload = null;
});
Assurez-vous de l'avoir avant de soumettre la fonction de soumission principale! (si seulement)
Voici ce que nous utilisons:
Sur le document prêt, nous appelons la fonction beforeunload.
$(document).ready(function(){
$(window).bind("beforeunload", function(){ return(false); });
});
Avant toute soumission ou location.reload, nous libérons la variable.
$(window).unbind('beforeunload');
formXXX.submit();
$(window).unbind("beforeunload");
location.reload(true);
<!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>
À la recherche de Detect onbeforeunload pour l’application Web ASP.NET, j’avais bien affiché . Je dois afficher un message d’avertissement si un contrôle de saisie est modifié sur la page en utilisant ASP.NET avec une page maître et une page de contenu. J'utilise 3 espaces réservés de contenu sur la page maître et le dernier est après le formulaire
<form runat="server" id="myForm">
donc après la balise de fermeture de formulaire et avant la balise 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>
beforeunload ne fonctionne pas de manière fiable de la sorte, en ce qui concerne la liaison. Vous devriez l'attribuer en natif
donc jukuery 1.7 à partir de maintenant, l’API de l’événement a été mise à jour, .bind () /. unbind () reste disponible pour la compatibilité ascendante, mais la méthode préférée est en utilisant les fonctions on ()/off ().