Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   setAttribute, removeAttribute (https://javascript.ru/forum/events/4500-setattribute-removeattribute.html)

Cinic 28.07.2009 14:43

setAttribute, removeAttribute
 
Добрый день.
Есть необходимость открывать поле password при вводе пароля, чтобы видеть то что вводишь.
При попытке изменить аттрибут type у <input type="password"> на text, чтобы было видно что вводишь. Хорошего получилось мало. Может кто пробовал делать такие вещи?

Kolyaj 28.07.2009 15:25

Подменять весь элемент, а не атрибут.

Octane 28.07.2009 15:30

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

Теперь, по событию onfocus, элемента ввода, скрываем label, по событию onblur — отображаем.
Так работает форма авторизации в Яндекс

Cinic 28.07.2009 16:00

Спасибо 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);
		}
	);

Kolyaj 28.07.2009 16:00

Octane,
ему другое надо
Цитата:

Сообщение от Cinic
чтобы видеть то что вводишь.

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

Octane 28.07.2009 16:08

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

Цитата:

Сообщение от Kolyaj
на Яндексе немножко не так работает

Наверное, еще дополнительно проверяют, после загрузки, не заполнены ли уже поля?

Kolyaj 28.07.2009 16:19

Они могут и после загрузки заполниться, если автоподстановка пароля по логину случится.

Cinic 28.07.2009 17:31

Цитата:

Сообщение от Kolyaj (Сообщение 25524)
Octane,
ему другое надо

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

В данном случае я пока что не претендую на подстановку браузером ;) Возможно в следующем релизе :)


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