IE и свойство type.
<input class="data" type='text' value="Пароль" maxlength="30" onclick="this.value=''; this.type='password'" /> В лисе тайп отлично меняется, звездочками становятся все символы, в IE же не меняется и выдается ошибка: Не удалось получить свойство type.Данна команда не поддерживается. Как же быть? |
Модераторы, пардон.. тема уже поднималась.
Вот тут спросил. http://javascript.ru/forum/css-html-....html#post8268 |
А почему его сразу не сделать type="password"? Да IE не разрешает изменять type элемента, если тот уже находится в дереве. Выход: удалять старный и создавать новый элемент:
var oldInputNode = … ; // ссылка на нужный input; var inputNode = document.createElement('input'); inputNode.type = 'password'; inputNode.value = 'Пароль'; … inputNode.className = 'data'; oldInputNode.parentNode.replaceChild(inputNode, oldInputNode); |
Цитата:
Спасибо за решение! |
Цитата:
|
Octane, Я вот смотрю на яндексе форма авторизации по такому же принципу сделана и запоминает пароли. Или я неправильно понял, что вы имели в виду?
Доработал ваш пример работает все, только вот метод focus IE не понимает, не подскажете аналог?) |
В Яндексе насколько я понял сделано по другому, там <input> всегда имеет type="password", а на него сверху накладывается <label> с текстом «Пароль». <label> связан с <input> через атрибут «for», который соотвествует идентификатору <input>, при нажатии на <label> браузер передает фокус ввода <input type="password"> у которого для событий «onfocus» и «onblur» назначены обработчики событий, изменяющие положение <label>. Поэтому везде встроенные менеджеры паролей корректно срабатывают.
Псевдокласс :focus в IE < 8 обрабатывается через JavaScript inputNode.onfocus = function() {…}; inputNode.onblur = function() {…}; |
Реализовал, положив input в label.
Благодаря for и никакого focus'a не нужно). Спасибо за наводки! |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 10:11. |