2010-08-20 4 views
0

Ошибка: http://www.chubbyfish.co.uk/bug.htmlFirefox ошибка - динамический элемент ввода

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

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

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

+0

Невозможно воспроизвести. Какую версию ты используешь? –

+0

Я могу воспроизвести это в Firefox 3.5.8 на Ubuntu 10.10. Какой браузер и ОС вы используете? –

+0

Извинения, моя ошибка, я перезаряжался (повелитель ... * facepalm *) –

ответ

1

Попробуйте использовать 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.

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

<!DOCTYPE html> 

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

+1

Нет ничего плохого (или устарело) о 'document.forms'. Однако chubbyfish использует это неправильно здесь. – RoToRa

+0

Спасибо. Я обновил страницу, и теперь она проверяется как HTML5. Ошибка все еще существует! – chubbyfish

+0

Это может ничего не делать, но даже если это не так, это хорошая практика. Удалите конечную самозакрывающуюся косую черту в конце тегов 'input' и' meta'. Этот самозакрывающийся синтаксис не должен выполняться в HTML. –

1

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

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

+0

Dang. Я уверен, что этот ответ не было здесь, когда я впервые посмотрел на страницу, но, учитывая, что это было всего несколько минут назад, я, должно быть, был слепым. Я согласен с вами и имею немного больше наблюдаемых данных, чтобы поддержать факт, чтобы пойти. +1 за то, что сказал Я сказал, но на 25 минут раньше. :) – Chris

+0

Да. Отлично сработано. Вы выигрываете роскошную яхту. Проблема с добавлением атрибутов имен. Спасибо Крису и РоТоРа !! :-) – chubbyfish

+0

@chubbyfish: jsut stick em в сообщении мне было бы? :) – Chris

1

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

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

[1] Интересно отметить, что текст «это переписывается обновлением», похоже, не реплицируется, если я просто загружаю страницу и обновляю ее. Однако, если я изменяю это поле, очевидно, что он перемещается вниз по странице. Почему это я не уверен.

+0

+1 для более полной версии моего ответа. – RoToRa

+0

Спасибо. Как я сказал выше, атрибут name исправляет его. Хороший. Огромное спасибо! – chubbyfish

+0

@RoToRa: Aww ... Взаимная любовь и уважение. :) – Chris

Смежные вопросы