2012-01-09 59 views
0

想象一下,HTML表單和jQuery庫已加載。我喜歡這樣,如果某人目前沒有專注於表單域,並且他們單擊了Esc鍵,則會彈出一個對話框詢問他們是否要關閉表單窗口(因爲表單窗口作爲新選項卡打開) 。使用jQuery在文檔上捕獲Esc鍵,但不是內容

如果我試圖在$(文檔)上捕獲它,我遇到的麻煩是事件冒泡的地方,因爲字段選擇這個,所以按Esc鍵在字段中導致事件觸發。

如何有效地(關鍵詞)防止事件的氣泡和捕獲時按下Esc時沒有領域有焦點?

回答

1

你將不得不使用IF語句來檢查沒有任何的輸入具有焦點:

if ($('input').is(":focus")){ ... }

my example我使用輸入按鍵來檢查的重點。

希望這會有所幫助。

+0

這是適用於所有的瀏覽器?說IE6或7? – 2012-01-09 10:03:23

+1

是的,我在IE6和7測試它,工作的一種享受。 – Alex 2012-01-09 10:33:59

0

試試這個:

var cancelClose=false; // This is a global variable 

    $(document).ready(function(){ 
     $('input, textarea,select').each(
       function(){ 
        $(this).focus(
          function(){ 
           cancelClose=true; 
          } 
         ); 
        $(this).blur(
          function(){ 
           cancelClose=false; 
          } 
         ); 
       } 
     ); 
    }); 

,然後在文件鍵按下事件

說:

if (cancelClose) 
     return false; 
+0

您不需要明確指定每個輸入。這可能會導致問題。你可以使用$(輸入)。 – Alex 2012-01-09 09:53:53

+0

@AlexThomas thanx,我對我編輯它:) 我加了「選擇」也 – 2012-01-09 09:59:39