Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.11.2008, 17:31
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

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

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

Как же быть?
Ответить с цитированием
  #2 (permalink)  
Старый 10.11.2008, 17:46
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

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

Вот тут спросил.
в теге input изменение атрибута type
Ответить с цитированием
  #3 (permalink)  
Старый 10.11.2008, 17:49
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А почему его сразу не сделать 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, 10.11.2008 в 17:55.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2008, 12:58
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

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

Спасибо за решение!
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2008, 15:25
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от lancer Посмотреть сообщение
При загрузке страницы в поле логина написано "логин", в поле "пароль" — пароль. Если я изначально оставлю type="password", то вместо слова "пароль" пользователь увидит звездочки.
Таким образом вы предотвращаете возможность браузера автоматически запомнить пароль. Если это форма регистрации, то это и не нужно, но вот для формы авторизации я бы подумал, прежде чем так делать, не всегда стоит 100% следовать тому, что нарисовал дизайнер, интерфейс должен быть не только красивый, но и удобный.
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2008, 15:34
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

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

Доработал ваш пример работает все, только вот метод focus IE не понимает, не подскажете аналог?)
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2008, 16:05
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

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

Последний раз редактировалось Octane, 11.11.2008 в 16:15.
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2008, 23:45
Новичок на форуме
Отправить личное сообщение для Kolridg Посмотреть профиль Найти все сообщения от Kolridg
 
Регистрация: 11.11.2008
Сообщений: 3

Реализовал, положив input в label.
Благодаря for и никакого focus'a не нужно).
Спасибо за наводки!
Ответить с цитированием
  #9 (permalink)  
Старый 11.11.2008, 23:50
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Kolridg
Благодаря for и никакого focus'a не нужно).
В ИЕ5, насколько я знаю, for не поддерживается.
Ответить с цитированием
  #10 (permalink)  
Старый 12.11.2008, 00:01
Новичок на форуме
Отправить личное сообщение для Kolridg Посмотреть профиль Найти все сообщения от Kolridg
 
Регистрация: 11.11.2008
Сообщений: 3

Сообщение от Kolyaj Посмотреть сообщение
В ИЕ5, насколько я знаю, for не поддерживается.
Ясно. Но 5-ый я не беру в расчет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в теге input изменение атрибута type gabber Internet Explorer 6 11.11.2008 13:01
Не работает свойство style.display = 'table-cell' в ИЕ Sc@M Events/DOM/Window 4 23.09.2008 21:02
когда можно использовать for(var k in arr) scuter Общие вопросы Javascript 17 29.08.2008 15:34
свойство innerHTML и Построчное считывание с файла baal1988 Общие вопросы Javascript 7 14.08.2008 21:57