从动态生成的表单输入中检索字段值

时间:2009-07-10 04:58:27

标签: javascript yui

我不确定这是否只发生在我身上。基本上,如果我使用YUI将新元素添加到页面

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

然后我使用这些不同的方式读取元素的值,并得到一致的结果

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'

如果我通过浏览器更改字段值(例如,“新值”),并再次重复上述步骤,我会得到一些有趣的值

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'

但是,如果输入元素已经存在于页面中并且当前正在保存用户输入 - > '有些价值'

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

首先阅读与上述情景相同的结果

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'

如果用户通过浏览器向输入字段输入“新值”,则重复上述步骤

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'

我只是想知道如果使用不同的检索方式,为什么我会为动态生成的元素获取不同的值,或者只是因为我做错了?

1 个答案:

答案 0 :(得分:1)

弹出旧值可能是一个缓存问题。

我使用最新的YUI库构建了您的示例:http://tivac.com/yui2/jeffrey04_element.htm(您希望Firebug打开)。

使用正确的

element.get('value');
在这两种情况下,

调用都会为我返回正确的值。


不确定原因

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

有时会返回null。

如果您可以缩小返回错误值的情况,我会创建一个简单的测试用例submit a bug。他们非常欣赏这样的反馈,并且通常能够迅速做出回应并解决问题。