从动态生成的表单输入中检索字段值
我不确定这是否只发生在我身上。 基本上,如果我使用 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'
,得到与上述场景相同的结果,然后重复上述步骤,我只是想知道为什么动态生成的元素的值不同,为什么会得到不同的值使用了检索数据的方式,或者只是因为我做错了?
I am not sure whether this only happens to me. Basically if I have a new element added to the page using YUI
var element = new YAHOO.util.Element(document.createElement('input'));
element.set('value', 'some value');
element.appendTo(document.body);
Then I read the value of the element using these different ways, and get consistent result
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'
If I change the field value through the browser (for example, 'new value'), and repeat the above steps again, i get some interesting values
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'
However, if the input element is already exists in the page and is currently holding user input -> 'some value'
var element2 = new YAHOO.util.Element('some_input');
First read get same result as above scenario
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'
if the user enters 'new value' to the input field through the browser, then repeating the above steps gets
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'
I am just wondering why would I get different values for dynamically generated element if different way of retrieving data is used, or it is just because I am doing it wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
弹出旧值可能是缓存问题。
我在这里使用最新的 YUI 库构建了您的示例: http://tivac.com/yui2/jeffrey04_element.htm (您需要打开 Firebug)。
在这两种情况下,使用正确的
调用都会为我返回正确的值。
但不确定为什么
有时会返回 null。
如果您可以缩小返回错误值的范围,我将创建一个简单的测试用例并提交错误。 他们非常感谢这样的反馈,并且通常会快速响应和解决问题。
Old values popping up might be a caching issue.
I built your example using the latest YUI libraries here: http://tivac.com/yui2/jeffrey04_element.htm (you'll want to have Firebug open).
Using the correct
calls is returning the proper value for me in both cases.
Not sure why
is returning null sometimes though.
If you can narrow down the cases where it's returning an incorrect value I would create a simple test case and submit a bug. They really appreciate feedback like that and are generally fast to respond and fix issues.