1

私は自分自身にJavascriptを教えるための変換Webアプリを作成しています。ユーザーはテンキー(基本的には演算子のない電卓)でデータを入力できます。また、テンキーと同じようにデータを挿入するキーストローク(1〜9)を検出する機能を設定しました。また、すべてのデータをクリアする文字「c」

私の問題は、検索フィールド(オートコンプリートを使用してユーザーが他のコンバージョンを検索できるようにする)もあることです。ユーザーが「c」または数字キーを使用して何かを検索し、テンキーと検索フィールドの両方にデータを入力するようにしたくありません。

私のアイデアは、ifステートメントを作成して、検索フィールドがアクティブ(フォーカス)であるかどうか、および変数(有効)をfalseに変更して、キーストローク検出を無効にするかどうかを判断することでした。

私が抱えている問題は、focus属性を持つifステートメントを保持する関数が機能していないことです。

私のとりとめのないことが意味をなさない場合は、コードが問題を解決することを願っています。

これがfocus属性を持つ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
    }
};

どんな助けでも大歓迎です。意味がわからない場合は、喜んで説明します(または投稿を編集します)。

4

1 に答える 1

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
});
于 2013-02-01T19:05:13.893 に答える