Получение значения поля из входных данных, сгенерированных динамически - PullRequest
0 голосов
/ 10 июля 2009

Я не уверен, случается ли это только со мной. В основном, если у меня есть новый элемент, добавленный на страницу с помощью 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 Ответ

1 голос
/ 13 июля 2009

Выявление старых значений может быть проблемой кэширования.

Я создал ваш пример с использованием последних библиотек YUI: http://tivac.com/yui2/jeffrey04_element.htm (вам нужно открыть Firebug).

Использование правильного

element.get('value');

звонки возвращают правильное значение для меня в обоих случаях.


Не уверен, почему

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

иногда возвращает ноль.

Если вы можете сузить случаи, когда он возвращает неправильное значение, я бы создал простой тестовый пример и отправил бы ошибку . Они действительно ценят такие отзывы и, как правило, быстро реагируют и устраняют проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...