106 votes

Comment obtenir de l'ancienne Valeur avec onchange() de l'événement dans la zone de texte

J'ai une Zone de texte et une Valeur poplulated lors du chargement de la page. Maintenant, Si l'utilisateur chanegs toute chose dans la zone de texte, puis je veux obtenir le changement de la Valeur(Valeur à neuf) et l'Ancienne Valeur mais quand je fais de l'ÉLÉMENT.valeur puis sa donner une Valeur modifiée

toutes les Suggestions pour obtenir de l'ancienne valeur?

ci-dessous mon code

<head>
    <script type="text/javascript">
      function onChangeTest(changeVal) {
        alert("Value is " + changeVal.value);
      }
    </script>
  </head>
  <body>
    <form>
      <div>
          <input type="text" id="test" value ="ABS" onchange="onChangeTest(this)">  
      </div>
    </form>
  </body>
</html>

Merci d'Avance

201voto

Gabriel McAdams Points 22323

Vous aurez besoin de stocker l'ancienne valeur manuellement. Vous pouvez stocker un grand nombre de façons différentes. Vous pouvez utiliser un objet javascript pour stocker des valeurs pour chaque zone de texte, ou vous pouvez utiliser un champ caché (je ne le recommande pas trop html lourd), ou vous pouvez utiliser une propriété expando sur la zone de texte lui-même, comme ceci:

<input type="text" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;" />

Ensuite, votre fonction javascript pour gérer le changement ressemble à ceci:

    <script type="text/javascript">
    function onChangeTest(textbox) {
        alert("Value is " + textbox.value + "\n" + "Old Value is " + textbox.oldvalue);
    }
    </script>

83voto

George Points 2918

element.defaultValue vous donnera la valeur d'origine.

Veuillez noter que cela ne fonctionne que sur la valeur initiale.

Si vous avez besoin de ce faire persister le "vieux" de la valeur chaque fois qu'il change, un expando propriété ou une méthode similaire répondra à vos besoins

7voto

krsnik Points 11

Je vous suggère:

function onChange(field){
  field.old=field.recent;
  field.recent=field.value;

  //we have available old value here;
}

7voto

tiwari.vikash Points 11

Vous devez utiliser HTML5 attributs de données. Vous pouvez créer vos propres attributs et enregistrer des valeurs différentes.

3voto

Jon Points 19

Un sale truc que j'ai parfois l'utilisation, cache de variables dans l'attribut "name" (que j'ai l'habitude de ne pas les utiliser à d'autres fins):

select onFocus=(this.name=this.value) onChange=someFunction(this.name,this.value)><option...

De façon un peu inattendue, à la fois l'ancienne et la nouvelle valeur est alors soumis à l' someFunction(oldValue,newValue)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X