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.
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;
Utiliser
$('form').submit(function () {
window.onbeforeunload = null;
});
assurez-vous d'avoir ceci avant de soumettre la fonction principale! (le cas échéant)
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);
à 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 ().
<!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>