JQuery проблема с функцией живого фокуса - PullRequest
1 голос
/ 09 мая 2011

У меня есть несколько текстовых полей, которые я хочу скрыть, а затем показать в фокусе, но, похоже, они не работают должным образом

Вот мой JQuery

$("#txt1").live('focus', function() {
    $(this).hide();
    $("#txt2").show().focus();
});

$("#txt2").live('blur', function() {
    if ($(this).attr("value") == "") {
        $(this).hide();
        $("#txt1").show();
    }
});

А вот и мой HTML

<input type="text" id="txt1" value="Test" />

<input type="password" style="display:none" id="txt2" />

Проблема в том, что в Internet Explorer функция фокусировки live работает не так, как ожидалось.

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

У меня есть пример здесь, на jsFiddle

Первый тест - это тот, который является проблемой.

Я добавил второй, который работает как положено, но мне нужно, чтобы он работал с использованием функции live.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Я решил проблему, выполнив это

function pageLoad() {

$("#txt1").focus(function() {
    $(this).hide();
    $("#txt2").show().focus();
});

$("#txt2").blur(function() {
    if ($(this).attr("value") == "") {
        $(this).hide();
        $("#txt1").show();
    }
});

};

Вместо того, чтобы иметь в document.ready()

1 голос
/ 09 мая 2011

live не поддерживает focus и blur.

Используйте focusin и focusout.

...