2010-02-10 77 views
1

我有悄悄地檢查,看是否有客戶在我們面前下令結帳頁面。jQuery的變化() - 不能刪除焦點

他們填寫自己的電子郵件地址後,專注於下一個框,我仰望電子郵件並提出一個「歡迎回來」類型的事情與選項記住他們的細節。

我在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

,如果你不從腳本返回「假」會發生什麼? – Pointy 2010-02-10 17:53:37

+0

@Pointy然後表單將提交併重定向到操作頁面。 – 2010-02-10 17:55:18

+0

@vivin如果刪除「return false」,爲什麼要提交表單? – 2010-02-10 17:58:07

回答

3

嘗試:

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

假如把它放在你的AJAX調用的成功處理程序,甚至在你的change()處理程序。我無法從你的問題中得知是否是導致問題的AJAX調用,或者它是否爲change()處理程序。但是這個應該工作。

編輯

關於尖尖的評論。使用blur()弄亂標籤序列。另外,Pointy和Mattias指出你從你的處理程序返回false。由於您不在submit()處理程序中,因此您不需要這樣做。 return false;也可能是您的問題的原因。

+0

調用「blur()」的問題是它可能會搞亂「標籤序列」。如果用戶進行了更改,然後使用「選項卡」轉到下一個字段,則調用「blur()」會導致瀏覽器將焦點重置爲頁面上某個或多或少的隨機點。 – Pointy 2010-02-10 18:03:39

+0

好點;無論如何,我正在更新答案 - 它看起來可能與他從'change()'處理程序返回的'false'有關。 – 2010-02-10 18:04:21