2009-07-10 10 views
0

Je ne suis pas sûr que cela m'arrive uniquement. En gros, si j'ai un nouvel élément ajouté à la page en utilisant YUIRécupération de valeur de champ à partir de l'entrée de formulaire générée dynamiquement

var element = new YAHOO.util.Element(document.createElement('input')); 
element.set('value', 'some value'); 
element.appendTo(document.body); 

Je lis la valeur de l'élément en utilisant ces différentes façons, et obtenir un résultat cohérent

element.get('value'); // get 'some value' 
element.get('element').getAttribute('value'); // get 'some value' 
element.get('element').value; // get 'some value' 
// jquery as reference 
jQuery(element.get('element').val()); // get 'some value' 

Si je change la valeur du champ à travers le navigateur (par exemple, « nouvelle valeur ») et répétez les étapes ci-dessus, je reçois des valeurs intéressantes

element.get('value'); // get 'some value' 
element.get('element').getAttribute('value'); // get 'some value' 
element.get('element').value; // get 'new value' 
// jquery as reference 
jQuery(element.get('element').val()); // get 'new value' 

Cependant, si l'élément d'entrée est existe déjà dans la page et est en tenant les entrées utilisateur -> « une valeur »

var element2 = new YAHOO.util.Element('some_input'); 

Première lecture vous obtiendrez le même résultat que le scénario ci-dessus

element.get('value'); // get 'some value' 
element.get('element').getAttribute('value'); // get 'some value' 
element.get('element').value; // get 'some value' 
// jquery as reference 
jQuery(element.get('element').val()); // get 'some value' 

si l'utilisateur entre « nouvelle valeur » au champ d'entrée via le navigateur, puis en répétant les étapes ci-dessus devient

element.get('value'); // get 'new value' 
element.get('element').getAttribute('value'); // get 'new value' 
element.get('element').value; // get 'new value' 
// jquery as reference 
jQuery(element.get('element').val()); // get 'new value' 

Je me demande pourquoi j'obtenir des valeurs différentes pour élément généré dynamiquement si différente façon de récupérer des données est utilisé, ou il est juste parce que je suis le faire est-ce mal?

Répondre

1

Les anciennes valeurs apparaissant peuvent être un problème de mise en cache.

J'ai construit votre exemple en utilisant les dernières bibliothèques YUI ici: http://tivac.com/yui2/jeffrey04_element.htm (vous voulez avoir Firebug ouvert).

En utilisant le bon

element.get('value'); 

appels est de retour la valeur appropriée pour moi dans les deux cas.


Je ne sais pas pourquoi

element.get('element').getAttribute('value') 

est de retour nul parfois cependant.

Si vous pouvez affiner les cas où il renvoie une valeur incorrecte, je créerais un cas de test simple et submit a bug. Ils apprécient vraiment les commentaires de ce genre et sont généralement rapides à répondre et à résoudre les problèmes.

+0

merci, je suis encore en utilisant YUI2.6 donc je ne sais pas si une partie du problème a été corrigée dans la dernière version. Je reçois null en appelant aussi la méthode getAttribute de DOM. Mon résultat d'essai element.get ('value'): "une certaine valeur" element.get ('element'). GetAttribute ('value'): null element.get ('élément'). Value: "valeur certaine" element2.get ('value'): "nouvelle valeur" element2.get ('element'). getAttribute ('value'): "valeur certaine" element2.get ('element'). value : "nouvelle valeur" – Jeffrey04

Questions connexes