Как скрыть поле ввода HTML с помощью JavaScript - PullRequest
1 голос
/ 23 ноября 2010

Мне нужно скрыть поле ввода текста с помощью JavaScript.Изменение его атрибута типа на скрытый не работает в IE (проблема безопасности).

Каков наилучший способ сделать это?

Примечание: нельзя использовать jQuery или другую библиотеку.

Ответы [ 4 ]

1 голос
/ 23 ноября 2010

Полагаю, вам необходимо динамически отображать и скрывать текстовое поле в зависимости от изменения условий в форме, в противном случае вы просто сделаете его <input type="hidden"... для начала.

Сохраните код, который показывает искрывает поле как есть, но также перехватывает событие onsubmit.

В обработчике отправки получите текстовое поле через document.getElementById(...) (или путем доступа к document.forms[i]) и проверьте, действительно лион скрыт.

Если скрыт , создайте новый узел DOM для поля <input type="hidden" ...> и добавьте этот узел в форму, вероятно, через myform.appendChild(...).Вы должны будете дать ему имя, которое ожидает ваш серверный код.Скопируйте содержимое скрытого текстового поля во вновь созданное поле type = hidden, а затем вернитесь из обработчика отправки, что позволит продолжить стандартную отправку.

Вы также можете просто скрыть текстовое поле при отправке,но вам также придется переместить его «за пределы экрана», иначе пользователь увидит его снова при обработке отправки.

0 голосов
/ 23 ноября 2010

document.myform.myelement.style.display = 'none'

работает должным образом даже в Internet Explorer.

0 голосов
/ 23 ноября 2010

Попробуйте обернуть его в div или span, а затем установить стиль отображения на none, если вы хотите скрыть его, а затем заблокировать (если вы использовали div) или встроенный (если вы использовали span), когда вы хотитепокажи это.

0 голосов
/ 23 ноября 2010

Единственный способ изменить его - добавить его в DOM.Вы можете создать новый элемент, а затем заменить им текущий.

Посмотрите на replaceChild и createElement, так как вы хотите выполнять сценарии DOM вручную.Я полагаю, вы знаете, что делать.

РЕДАКТИРОВАТЬ: "Скрытые" поля, насколько я знаю отправлены .Вы проверили ли они?И вы также можете просто сделать position:absolute; left:-9999em;, чтобы компенсировать их.

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