jQuery onblur не работает - PullRequest
       19

jQuery onblur не работает

10 голосов
/ 01 марта 2010
$('#lPass').focus(function() {  
        if (this.value == this.defaultValue) this.value = '';
        $(this).after('<input type="password" id="lPass" size="10" value="'+this.value+'"/>').remove();
}).blur(function() {
    alert(1);
});

<input id="lPass" type="text" size="10" value="Password"/>


onblur не работает.
Есть идеи?

Ответы [ 3 ]

26 голосов
/ 01 марта 2010

Использование в реальном времени вместо фокуса и размытия

.live () устарело.Вместо этого используйте .on () и .off () .

, поскольку вы добавляете ввод во время выполнения, поэтому он добавляется на страницу сиз событий, в реальном времени:

Прикрепить обработчик к событию для всех элементов, которые соответствуют текущему селектору, сейчас или в будущем.

Пример:

$('#lPass').on('focus', function() {
    if (this.value == this.defaultValue) this.value = '';
    $(this).after('<input type="password" id="lPass" size="10" value="' + this.value + '"/>').remove();
});


$('#lPass').on('blur', function() {
    alert(1);
});
2 голосов
/ 01 марта 2010

Первая проблема, которую я вижу, заключается в том, что ваш селектор является идентификатором #lPass, но в этом селекторе вы пытаетесь вставить новый тег с тем же идентификатором. Идентификатор должен быть уникальным на странице. ТОГДА вы пытаетесь удалить с помощью .remove () - кажется, для меня не имеет смысла.

Просто используйте .remove () или используйте новый идентификатор ...

ИЛИ уточнить, что вы хотите сделать.

Что касается .blur, просто используйте размытие, но идентификатор должен быть фиксированным, или используйте .live (), как предлагают другие, если вы хотите размыть добавленное поле NEW.

2 голосов
/ 01 марта 2010

Это для вашего точного кода:

$('#lPass').live('focus', function() {  
    if (this.value == this.defaultValue) this.value = '';
    $(this).after('<input type="password" id="lPass" size="10" value="'+this.value+'"/>').remove();
}).live('blur', function() {
    alert(1);
});
...