Надпись в поле ввода password
Вложений: 1
Все никак не приходилось самому сделать такую штутку, вот сейчас спросили каким образом это можно реализовать, получился такой вариант:
CSS:
.field {
position: relative;
}
.field label {
position: absolute;
top: 2px;
left: 3px;
}
.field label.hidden {
left: -9999px;
}
javascript:
window.onload = function () {
var input = document.getElementById("pwd");
var label = input.parentNode.getElementsByTagName("label")[0];
if (!input.value) {
label.className = "";
}
input.onfocus = function () {
label.className = "hidden";
};
input.onblur = function () {
if (!input.value) {
label.className = "";
}
};
};
HTML: <form action=""> <fieldset> <div class="field"> <label for="pwd" class="hidden">Enter password</label> <input id="pwd" type="password" /> </div> </fieldset> </form> |
Цитата:
Решение: постоянно по таймауту проверять, не произошло ли чего с полями. А focus/blur остаются, чтобы запоминать состояние фокуса. |
Хм… фокс пароли до window.onload подставляет, а я потом проверку делаю:
if (!input.value) {
label.className = "";
}
Поэтому работает. Вот в IE действительно косяк, он подставляет пароль после выбора логина из выпадающего списка. Завтра поправлю, сделаю по таймауту. |
Вложений: 1
Исправленный вариант:
CSS:
.field {
position: relative;
}
.field label {
position: absolute;
top: 2px;
left: 3px;
}
.field label.hidden {
left: -9999px;
}
HTML: <form action=""> <fieldset> <div class="field"> <label for="pwd" class="hidden">Enter password</label> <input id="pwd" type="password" /> </div> </fieldset> </form> JаvaSсript:
var input = document.getElementById("pwd");
var label = input.parentNode.getElementsByTagName("label")[0];
var active = false;
function change() {
label.className = input.value ? "hidden" : "";
}
input.onfocus = function () {
active = true;
label.className = "hidden";
};
input.onblur = function () {
active = false;
change();
};
(function () {
if (!active) {
change();
}
setTimeout(arguments.callee, 300);
}());
Пример |
Цитата:
|
Увы, браузеры не оповещают о том что делают что-то с паролями и прочим автозаполнением.
setTimeout(arguments.callee, 300); Использование callee устарело с выходом ES5, использовать не рекомендуется. https://developer.mozilla.org/en-US/...guments/callee |
| Часовой пояс GMT +3, время: 23:23. |