2013-02-01 154 views
1

我正在創建一個轉換web應用程序來教我自己的Javascript。用戶可以用數字鍵輸入數據(基本上是一個沒有操作員的計算器)。我還設置了一個函數來檢測插入數據的按鍵(1-9),就像數字鍵盤一樣。並且還有清除所有數據的字符'c'jquery檢測輸入焦點

我的問題是我也有一個搜索字段(它使用自動完成來使用戶搜索其他轉換)。我不希望用戶使用'c'或數字鍵搜索某些內容,並讓它將數據輸入到數字鍵盤和搜索字段中。

我的想法是創建一個if語句來確定搜索字段是否處於活動狀態(焦點),以及是否將變量(啓用)更改爲false,從而禁用鍵擊檢測。

我遇到的問題是,持有帶有焦點屬性的if語句的函數不起作用。

如果我的散漫沒有任何意義,希望代碼將清除事情。

下面是if語句的焦點屬性

$(document).ready(function(){ 
    if($(':focus').attr('#searchInput') == 'input')){ 
     enabled === false; 
    } 
}); 

這裏是擊鍵檢測代碼(我省略了多餘的部分以節省空間

document.onkeydown = function(event){ 
    var key = event.charCode || event.keyCode; 
    if(enabled === true){ 
     if(key === 67){ 
      clearInput(input); //Clears form input (input is my form ID) 
     }else if(key === 48){ 
      writeInput(input, zero); //Zero is a var equaling 0 
     } 
     ... 
    }else{ 
     return false; //if enabled is false don't detect keystrokes 
    } 
}; 

任何幫助將不勝感激。如果沒有任何意義,我會很樂意解釋(或編輯帖子)。

+0

你認爲'enabled === false;'在做什麼? – Peter

+0

Enabled是一個布爾變量。我的想法是在焦點IF聲明爲真時將其更改爲false。因此禁用擊鍵檢測。感謝您的快速評論。 –

+0

'.attr('#searchInput')'不知道。你把它放在哪裏? – Jai

回答

4
$(document).keyup(function(e){ 
    if($('#searchInput').is(':focus')) { 
     return ; // search field is focused, ignore other part of function 
    } 
    var key = e.which; 
    // do your code here 
}); 
+0

你太棒了!這工作完美。爲我節省了很多時間。並清理我的代碼。謝謝! –