2012-07-01 49 views
2

我有JavaScript代碼,應該在焦點位移時執行一次。一切正常,但由於某種奇怪的原因,此代碼執行了兩次,因此我給出了兩個警告窗口。雙啓動onblur事件

$(document).ready(function() { 
    $('#username').blur(function() { 

     var formData = { 
      "username":$('#username').val() 
     }; 

     $.ajax({ 
      url:'check.php', 
      type:'POST', 
      data:'jsonData=' + $.toJSON(formData), 
      success: function(res) { 
       alert(res); 
      } 

     }); 
    }); 
}); 

我在做什麼錯?

+0

你有多個元素的'id =「username」'屬性? – Farahmand

+0

好的,如果你用'console.log'替換'alert'會發生什麼?這個事件還會發生兩次嗎? –

+0

Fari,只有一個。 – dark

回答

-1

我搬到此代碼之前#username股利和一切,因爲它應該有工作。

5

當瀏覽器窗口失去焦點時,某些瀏覽器(Chrome瀏覽器,也許Safari)會發出單獨的「模糊」事件。這對我來說似乎是一個錯誤,我不知道可以做些什麼。

要說明一下:如果你已經有了一個<input>一個「模糊」處理程序,它有焦點,然後單擊瀏覽器窗口之外(或ALT-TAB到另一個應用程序),然後鍍鉻閃光 「模糊」事件。這兩件事情看起來都差不多,所以很難判斷你是否應該注意。

我最好的建議是在「焦點」和「模糊」之間切換一些「班級」值或其他內容,並忽略看起來不適合的「模糊」州。

Here's the question I posted on that issue.

+0

我有一個類似的問題,但後來我完全忽略它(只有鉻壽,挑釁不是Safari)。現在知道原因很好。 – Adi

+0

如果我將「模糊」事件更改爲「onclick」事件,此問題仍然存在。所以,我在opera和firefox也有問題,不僅是鉻(或safari) – dark