Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2009, 13:43
Cinic
 
Сообщений: n/a

setAttribute, removeAttribute
Добрый день.
Есть необходимость открывать поле password при вводе пароля, чтобы видеть то что вводишь.
При попытке изменить аттрибут type у <input type="password"> на text, чтобы было видно что вводишь. Хорошего получилось мало. Может кто пробовал делать такие вещи?
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2009, 14:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Подменять весь элемент, а не атрибут.
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2009, 14:30
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Расположите абсолютно-позиционированный label над элементом ввода и обязательно свяжите их по идентификатору:
<label for="pwd">Enter password</label>
<input id="pwd" type="password" />

Теперь, по событию onfocus, элемента ввода, скрываем label, по событию onblur — отображаем.
Так работает форма авторизации в Яндекс
Ответить с цитированием
  #4 (permalink)  
Старый 28.07.2009, 15:00
Cinic
 
Сообщений: n/a

Спасибо Kolyaj.
В процессе ожидания пришёл именно к этому выводу
@Octane: немного не то требовалось

В итоге получилось с использованием jQuery такое решение:
$('.lock').toggle(
		function(event){
			$(event.target).toggleClass('open');
			var val = $('form[id*="_form_auth_login"] input[name="password"]').attr('value');
			$('form[id*="_form_auth_login"] input[name="password"]').after('<input type="text" name="password" />').remove();
			$('form[id*="_form_auth_login"] input[name="password"]').attr('value', val);
		},
		function(event){
			$(event.target).toggleClass('open');
			var val = $('form[id*="_form_auth_login"] input[name="password"]').attr('value');
			$('form[id*="_form_auth_login"] input[name="password"]').after('<input type="password" name="password" />').remove();
			$('form[id*="_form_auth_login"] input[name="password"]').attr('value', val);
		}
	);
Ответить с цитированием
  #5 (permalink)  
Старый 28.07.2009, 15:00
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Octane,
ему другое надо
Сообщение от Cinic
чтобы видеть то что вводишь.
А еще твой алгоритм не будет работать в распространенных случаях подстановки браузерами логинов/паролей. Так что форма авторизации на Яндексе немножко не так работает.
Ответить с цитированием
  #6 (permalink)  
Старый 28.07.2009, 15:08
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Да не внимательно прочитал вопрос

Сообщение от Kolyaj
на Яндексе немножко не так работает
Наверное, еще дополнительно проверяют, после загрузки, не заполнены ли уже поля?
Ответить с цитированием
  #7 (permalink)  
Старый 28.07.2009, 15:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Они могут и после загрузки заполниться, если автоподстановка пароля по логину случится.
Ответить с цитированием
  #8 (permalink)  
Старый 28.07.2009, 16:31
Cinic
 
Сообщений: n/a

Сообщение от Kolyaj Посмотреть сообщение
Octane,
ему другое надо

А еще твой алгоритм не будет работать в распространенных случаях подстановки браузерами логинов/паролей. Так что форма авторизации на Яндексе немножко не так работает.
В данном случае я пока что не претендую на подстановку браузером Возможно в следующем релизе
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с createElement и setAttribute Олег 1987 Общие вопросы Javascript 1 22.11.2008 23:56
setAttribute dont work in IE7 february Events/DOM/Window 4 14.08.2008 18:51
setAttribute() Systemnik Events/DOM/Window 11 19.06.2008 08:02