10
votes

Comment obtenir la valeur précédente et nouvelle valeur sélectionnée à partir d'une option Dom Element avec JavaScript?

Comment puis-je récupérer la nouvelle valeur sélectionnée et la valeur sélectionnée précédente avec JavaScript lorsque OnCHange ou événement similaire est appelé? XXX

Merci! Merci! Merci! :)


0 commentaires

4 Réponses :


9
votes

Utilisation droite JavaScript et DOM, quelque chose comme ceci ( exemple en direct ):

var box, oldValue;

// Get a reference to the select box's DOM element.
// This can be any of several ways; below I'll look
// it up by ID.
box = document.getElementById('theSelect');
if (box.addEventListener) {
  // DOM2 standard
  box.addEventListener("change", changeHandler, false);
}
else if (box.attachEvent) {
  // IE fallback
  box.attachEvent("onchange", changeHandler);
}
else {
  // DOM0 fallback
  box.onchange = changeHandler;
}

// Our handler
function changeHandler(event) {
  var index, newValue;

  // Get the current index
  index = this.selectedIndex;
  if (index >= 0 && this.options.length > index) {
    // Get the new value
    newValue = this.options[index].value;
  }

  // **Your code here**: old value is `oldValue`, new value is `newValue`
  // Note that `newValue`` may well be undefined
  display("Old value: " + oldValue);
  display("New value: " + newValue);

  // When done processing the change, remember the old value
  oldValue = newValue;
}


1 commentaires

J'aimerais utiliser un cadre JavaScript. Je suis un grand fan de prototype! :) Mais nous ne sommes pas capables d'introduire l'un d'entre eux pour le moment. :( Merci pour votre conseil, je vous ferai savoir si cela fonctionne.




2
votes

L'extrait de code suivant peut aider xxx


1 commentaires

Comment est-ce que ce code est meilleur que la réponse acceptée? Pourquoi est-il préférable d'utiliser l'événement en ligne Onchange?



1
votes

ci-dessous travaillé pour moi. Ajouter ci-dessous deux événements à votre étiquette HTML Select: -

onFocus='this.oldValue = this.value'; //if required in your case add this line to other events like onKeyPressDown and onClick. 
onChange = 'alert(this.oldValue); this.value=this.oldValue'


1 commentaires

Merci pour cette réponse. Je préfère cette façon. Au lieu d'utiliser Ceci Je définit une propriété dans la fenêtre. $ myname.oldvalue = ceci.value et j'ai également attribué l'OldValue à la valeur actuelle dans Onfocus et Onchange car la réponse peut changer sans la mise au point de tirer à nouveau.