Я хочу изменить тип ввода текста на пароль. Но это не работает в ie8. Я нашел решение; клонировать и заменить ввод, но onblur не работает после клонирования.

Отладчик не нарушает функцию OnBlur. Может кто-нибудь показать мне?

Вот код JS:

$(document).ready(function () {
    var input = document.getElementById("Password");
    var input2 = input.cloneNode(false);
    input2.id = 'password1';
    input2.type = 'password';
    $('#Password').focus(function () {
       input.parentNode.replaceChild(input2, input);
       input2.focus();
    });
    $('#password1').blur(function () {
        if ($(this).val() == '' || $(this).val() == Passwordtxt) {
            document.getElementById("password1").setAttribute("type", "text");
            $(this).val(Passwordtxt);
        }
    });
});
2
orcun 24 Янв 2013 в 14:03

2 ответа

Лучший ответ

+ Изменить

$('#password1').blur(function () {

Кому

$('body').on('focusout','#password1',function () {

См. .on().

События focus и blur определяются W3C, чтобы не пузыриться, но jQuery определяет кросс-браузерные события focusin и focusout, которые пузыриваются. Когда focus и blur используются для присоединения делегированных обработчиков событий, jQuery отображает имена и доставляет их как focusin и focusout соответственно. Для согласованности и ясности используйте имена пузырьковых событий.

0
pktangyue 24 Янв 2013 в 10:57

Использовать on делегат события

Попробуй это

$(document).on('blur','#password1',function () {...

Замена document на ближайший элемент является предпочтительной

-2
bipen 24 Янв 2013 в 10:05