Cela pourrait être manipulés avec juste une variable booléenne, nous l'appelons sale peu de manipulation. Si vous avez observé, généralement dans des pages web, une fois que l'utilisateur effectue une action d'édition sur tous les champs de la forme est considérée comme sale(édité)(même si les données restent inchangés à la suite de l'édition). Lorsque l'utilisateur tente d'accéder à partir de la page de l'utilisateur est invité à le faire si il veut enregistrer les modifications.
Conformément à la pratique standard, il n'existe pas de vérifier si, après la modification d'une partie de terrain si la valeur effectivement changé ou pas. Pour exemple: Si l'utilisateur modifie et ajoute 'xyz' à un champ de texte, puis les supprime 'xyz' essentiellement la forme de données reste la même qu'avant, mais la forme est toujours considéré comme "sale" et l'utilisateur est invité message d'avertissement quand il essaie de naviguer loin.
Donc, si vous voulez mettre en œuvre ce que les choses deviennent assez simple. Vous n'avez qu'à ajouter onchange() gestionnaires d'événements pour les contrôles et mondiale de la variable booléenne quelque chose comme isDirty de vrai à l'intérieur de ces gestionnaires d'événements.
Une fois que l'utilisateur veut naviguer loin, vous pouvez flasher un message "Il peut y avoir des modifications non enregistrées sur la page en cours. Voulez-vous sauver?". Utilisateur de ne pas être déçu, même s'il remarque que son modifier ne pas modifier les données initiales.
Les réponses données ci-dessus de mettre en œuvre cette très comportement. Et j'ai écrit cela parce que tu semblais avoir une idée de vérifier chaque et chaque domaine, de par leur valeur initiale pour voir si c'était vraiment modifié après la modifier. Je voulais juste vous dire que la vérification de chaque champ n'est pas du tout nécessaire.