2010-05-12 3 views
2

Existe-t-il un moyen standard dans JQUERY de stocker (au moment du document prêt) les valeurs d'origine des champs de formulaire sur la page afin de vérifier (plus tard) si les champs ont vraiment changé ou non?Un moyen standard JQUERY pour stocker la valeur d'origine d'un champ de formulaire?

Normalement, je vais faire quelque chose comme ceci:

var NameField = $("INPUT[name='NameField']"); 
//Record the original value. 
NameField.OriginalVal = NameField.val(); 

Ceci est assez simple, mais je me demande d'il y a un moyen « standard » pour le faire.

EDIT

Une exigence supplémentaire que j'ai oublié est qu'il a besoin de travailler pour tous les types de champs de formulaire, y compris sélectionner et textareas.

Répondre

13

La valeur par défaut (à savoir la valeur qui a été spécifié dans le code source en utilisant l'attribut value) est disponible automatiquement la propriété defaultValue.

alert($("#myInput").defaultValue); 

More info at W3Schools

Cela semble faire partie de la spécification JS depuis la version 1.0 de sorte qu'il est sûr à utiliser. (Reference, allemand seulement désolé)

+0

wow nice à savoir, comment utiliser ceci: '$ (" INPUT [name = 'NameField'] "). DefaultValue'? * edi * ok thx pour l'édition: P – meo

+0

@meo yup, ça devrait marcher. –

+0

+1 choses intéressantes .. ne savait pas à ce sujet du tout .. –

0

Un autre moyen simple consiste à définir une variable booléenne sur l'événement onchange du contrôle d'entrée.

i.e. var isFormValueChanged = false; 

$("INPUT[name='NameField']").bind("change", function() 
{ 
     isFormValueCanged = true; 
}); 
+1

Merci. Cela suit uniquement l'événement onchange, il ne vérifie pas réellement si la valeur a changé. Si l'utilisateur le change, nous voulons savoir si la valeur est la même que l'original. –

1

Il n'y a pas de façon standard de stocker les valeurs d'origine.

jQuery a une meilleure façon de stocker des valeurs que votre exemple:

var NameField = $("INPUT[name='NameField']"); 
NameField.data('OriginalVal', NameField.val()); 
+0

-1 parce que JavaScript stocke déjà les valeurs d'origine. Voir la réponse de Pekkas. – Colin

Questions connexes