Firefox bug - динамический элемент ввода - PullRequest
0 голосов
/ 20 августа 2010

Ошибка: http://www.chubbyfish.co.uk/bug.html

Я динамически создаю 3-е поле ввода, а затем добавляю к нему значение («входного значения 3»).

Обновите страницу несколько раз, и вы увидите, что input4 и input5 заполнены одним и тем же значением. Почему?

Есть идеи ?! Если вы можете это исправить, я куплю вам роскошную яхту и новый дом!

Ответы [ 3 ]

1 голос
/ 20 августа 2010

Я бы сказал, что в автозаполнении Firefox есть какая-то ошибка.

Попробуйте задать входные данные name с (что в любом случае является обычным способом ввода) Может быть, это прояснит это.

1 голос
/ 20 августа 2010

Причина в том, что Firefox'ы «запоминают» введенные значения формы при обновлении страницы.Используя firebug, я ставлю точку останова в первой строке JS, и при нажатии на кнопку «Обновить» он отображает четыре текстовых поля с тем же текстом, что и первые четыре поля, которые уже были на странице [1].Таким образом, третье отображаемое текстовое поле имеет «значение ввода 3» в текстовом поле.Затем, когда новый ящик вставлен, этот третий ящик становится номером четыре.Мне интересно, если это потому, что Firefox связывает значения на основе атрибута имени, который, как я заметил, вы пропустили.Вполне возможно, что добавление этого исправит это.

Я бы посоветовал пойти и найти баг-трекер в Firefox и посмотреть, уже сообщалось ли об этом.Если нет, то сообщите об этом на странице воспроизведения.Если он работает нормально, когда входные данные имеют имена, хотя это можно считать ошибкой - я не могу сказать.msgstr "текст, похоже, не реплицируется вниз, если я просто загружаю страницу и нажимаю обновить.Тем не менее, если я изменю это поле, оно также будет видно, что оно перемещается по странице.Почему это я не уверен.

1 голос
/ 20 августа 2010

Попробуйте использовать document.getElementById вместо устаревшего (не рекомендуется) document.forms объекта.Так, например, замените:

document.forms[0].input3.value = 'input 3 value';

на:

document.getElementById('input3').value = 'input 3 value';

Как только это будет сделано, присвойте каждому тегу input атрибут name.Для удобства дайте ему тот же name, что и id.Элементы формы работают с name s.

Кроме того, это не связано, но было бы неплохо иметь стандартный тип документа, чтобы избежать рендеринга в «режиме причуд» (старый режим движка, используемый для совместимости со старымместа).Вы можете сделать это, вставив этот код в самом начале HTML-страницы:

<!DOCTYPE html>

Добавление: , поскольку вы используете HTML, а не XHTML, вы не должны использовать self-Закройте нотацию для тегов input (вы должны удалить косую черту прямо перед >).

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