2010-10-26 4 views
0

Je voudrais créer un onbeforeunload "Vous avez fait des modifications à la page, restez sur cette page, quittez cette page" jQuery plugin.window.onbeforeunload trucs et astuces

Le plugin devra:

  1. Encaisser un élément contenant. $(".editableFieldContainer").beforeUnload()
  2. L'autodétection passe à not(:hidden) input/textarea/selects.
  3. Invite l'utilisateur à rester sur la page si les éléments de l'élément conteneur ont changé.
    • sauf si la page a été soumise via le formulaire.
    • sauf si la page/l'utilisateur souhaite annuler les modifications, par exemple, un bouton/une touche "Annuler" a été enfoncé.

Quelque chose comme ça (mais pas tout à fait, il manque quelques fonctionnalités):

(function(){ 
    var changed = false; 
    $.beforeUnloadCanceled = false; 
    $.fn.beforeUnload = function(){ 
     $.beforeUnloadCanceled = true; 
     return $(this).delegate("input,select,textarea", "change", function(){ 
      changed = true; 
     }); 
    }); 
    window.onbeforeunload = function(){ 
     if(changed && !beforeUnloadCanceled){return "You have made edits to the page.";} 
    }; 
}()); 

Est-il déjà un plugin décent qui fait cela?

Répondre

1

Cela pourrait être ce que vous cherchez.

jquery.wtFormDirty-2.0.2.js

+0

ressemble qui pourrait le faire avec un peu de travail ... et le code des odeurs d'œufs pourris. Mais c'est un début. Merci! –

+0

Je viens de faire une version plus récente. Cela semble mieux que l'ancien .. http://wt-plugins.googlecode.com/files/jquery.wtFormDirty-2.js – code90

+0

Vérifiez votre chemin de code de liste de sélection. c'est un peu cassé. –

Questions connexes