Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   IE и свойство type. (https://javascript.ru/forum/events/2148-ie-i-svojjstvo-type.html)

lancer 10.11.2008 17:31

IE и свойство type.
 
<input class="data" type='text' value="Пароль" maxlength="30" onclick="this.value=''; this.type='password'" />

В лисе тайп отлично меняется, звездочками становятся все символы, в IE же не меняется и выдается ошибка: Не удалось получить свойство type.Данна команда не поддерживается.

Как же быть?

lancer 10.11.2008 17:46

Модераторы, пардон.. тема уже поднималась.

Вот тут спросил.
http://javascript.ru/forum/css-html-....html#post8268

Octane 10.11.2008 17:49

А почему его сразу не сделать 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);

lancer 11.11.2008 12:58

Цитата:

Сообщение от Octane (Сообщение 8271)
А почему его сразу не сделать type="password"?

При загрузке страницы в поле логина написано "логин", в поле "пароль" — пароль. Если я изначально оставлю type="password", то вместо слова "пароль" пользователь увидит звездочки.

Спасибо за решение!

Octane 11.11.2008 15:25

Цитата:

Сообщение от lancer (Сообщение 8290)
При загрузке страницы в поле логина написано "логин", в поле "пароль" — пароль. Если я изначально оставлю type="password", то вместо слова "пароль" пользователь увидит звездочки.

Таким образом вы предотвращаете возможность браузера автоматически запомнить пароль. Если это форма регистрации, то это и не нужно, но вот для формы авторизации я бы подумал, прежде чем так делать, не всегда стоит 100% следовать тому, что нарисовал дизайнер, интерфейс должен быть не только красивый, но и удобный.

lancer 11.11.2008 15:34

Octane, Я вот смотрю на яндексе форма авторизации по такому же принципу сделана и запоминает пароли. Или я неправильно понял, что вы имели в виду?

Доработал ваш пример работает все, только вот метод focus IE не понимает, не подскажете аналог?)

Octane 11.11.2008 16:05

В Яндексе насколько я понял сделано по другому, там <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() {…};

Kolridg 11.11.2008 23:45

Реализовал, положив input в label.
Благодаря for и никакого focus'a не нужно).
Спасибо за наводки!

Kolyaj 11.11.2008 23:50

Цитата:

Сообщение от Kolridg
Благодаря for и никакого focus'a не нужно).

В ИЕ5, насколько я знаю, for не поддерживается.

Kolridg 12.11.2008 00:01

Цитата:

Сообщение от Kolyaj (Сообщение 8329)
В ИЕ5, насколько я знаю, for не поддерживается.

Ясно. Но 5-ый я не беру в расчет.


Часовой пояс GMT +3, время: 10:11.