1

我正在创建一个转换网络应用程序来自学 Javascript。用户可以使用数字键盘(基本上是没有运算符的计算器)输入数据。我还设置了一个功能来检测像数字键盘一样插入数据的击键(1-9)。还有清除所有数据的字符'c'

我的问题是我还有一个搜索字段(它使用自动完成功能使用户能够搜索其他转化)。我不希望用户使用“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
    }
};

任何帮助将不胜感激。如果有任何不妥之处,我会很乐意解释(或编辑帖子。)

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 回答