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 не нужно). Спасибо за наводки! |
Цитата:
|
Цитата:
|
Ну Octane приводил в пример Яндекс, а ему (Яндексу) приходится брать в расчет ИЕ5.5.
|
| Часовой пояс GMT +3, время: 22:13. |