onbeforeunload - de les lier à des événements sélectifs
Je suis en train de travailler sur une application d'entreprise où les formulaires générés dynamiquement et nous n'avons pas de contrôle sur le code. La plupart des contrôles dans le formulaire de code suivant associés
<select name="s_10_1_1_0" onchange = 'SWESubmitForm(document.SWEForm10_0,s_5,"","1-E0RHB7")' id='s_10_1_1_0' tabindex=1997 >
<input type="text" name='s_10_1_11_0' value='' onchange = 'SWESubmitForm(document.SWEForm10_0,s_7,"","1-E0RHB7")' id='s_10_1_11_0' tabindex=1997 maxlength="30">
Nous voudrions vous présenter un ok annuler la boîte de dialogue lorsque l'utilisateur tente d'accéder à une autre page en utilisant le lien dans l'en-tête ou le pied de page.
J'ai utilisé de code suivant pour lier onbeforeunload événement et présenter un ok annuler la boîte de dialogue à l'utilisateur.
//this identifies the unique page name
var viewName = $('input[name="SWEView"]').val();
//if I am on desired page bind the event so that now dialog is presented to user
if(viewName == "XRX eCustomer Create Service Request View"){
$(window).bind('beforeunload', function(){
return 'Your Inquiry has not been submitted yet.';
});
}
Mais le problème est que cette boîte de dialogue apparaît à chaque fois que l'utilisateur modifie une valeur d'un champ dans le formulaire (je crois que c'est en raison de SWESubmitForm code présent pour l'événement onchange).
Je voudrais onbeforeunload dialogue à venir si l'utilisateur clique sur un autre lien à l'extérieur de la forme ou, en d'autres mots cravate onbeforeunload sélective des événements (y compris la fermeture de la fenêtre) sur la page.
S'Il Vous Plaît Aider
OriginalL'auteur Neel | 2012-03-27
Vous devez vous connecter pour publier un commentaire.
.onbeforeunload()
est mondiale. Vous ne pouvez pas déclencher uniquement pour certaines façons de quitter la page. Si le gestionnaire d'événement est installé, il va déclencher n'importe comment le spectateur quitte la page.Vous pouvez garder une trace de votre propre état interne et de décider s'il faut demander quoi que ce soit dans le
onbeforeunload()
gestionnaire ou tout simplement renvoie rien (donc pas d'invite est faite).Donc, vous pourriez avoir un code comme ceci:
Mise à jour
Comme c'est assez élevé sur google obtenir de nombreux points de vue, il serait intéressant de noter que cette réponse ne fonctionne plus.
Noter qu'il n'y est plus " sur " l'événement lié. À l'aide de la précédente
onbeforeunload
dans les versions ultérieures de jQuery en résultera rien ne se passe.OriginalL'auteur jfriend00