jquery change () на поле ввода в IE6 - не может удалить фокус - PullRequest
1 голос
/ 10 февраля 2010

У меня есть страница оформления заказа, которая ненавязчиво проверяет, заказывал ли клиент у нас ранее.

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

У меня проблема в IE6 - всякий раз, когда фокус теряется из поля ввода, функция ajax запускается как обычно, но фокус возвращается обратно в поле ввода. Это означает, что всякий раз, когда клиент пытается отойти от поля ввода электронной почты, он продолжает возвращаться к нему и не может продолжить.

Есть ли способ остановить это поведение?

  // check when the e-mail box is changed
  $("#email").change(function(event) {
    $.ajax({
        type: "POST",
        url: "procBasketEmailLookup.php", 
        data: $("#checkoutform").serialize(),
        success: function(response) {
            $('#emailstuffOutput').hide();
            $('#emailstuffOutput').html(response);
            $('#emailstuffOutput').show('slow');
        }
        });
        // DON'T ALLOW THE PAGE TO SUBMIT
    return false;
    });

1 Ответ

3 голосов
/ 10 февраля 2010

Попробуйте:

jQuery("#emailInputField").blur();

Поместите это в обработчик успеха вашего вызова AJAX или даже в ваш change() обработчик. По вашему вопросу я не могу сказать, является ли проблема вызовом AJAX или обработчиком change(). Но это должно работать.

EDIT

Что касается комментария Пойнти. Использование blur() портит последовательность вкладок. Кроме того, Пойнти и Маттиас указали, что вы возвращаете false из вашего обработчика. Вам не нужно этого делать, поскольку вы не являетесь обработчиком submit(). return false; также может быть причиной вашей проблемы.

...