如果焦点在文本字段和输入上,则启用/禁用按键

enable/disable keystrokes if focus is on textfield and input

本文关键字:启用 焦点 文本 字段 输入 如果      更新时间:2024-01-21

我在一个简单的公文包页面上使用onepagescroll。我想添加空格键功能,并在插件中找到了要修改的代码。

现在它随着空格键滚动,但是在页面上测试了一个联系人表单后,我注意到当焦点放在文本区域或输入上时,与插件相关的键都不起作用。

如果我删除了一个键的大小写,文本区域会按预期工作,我可以用空格向上/向下/缩进,所以问题就在这个代码中:

    _keydownHandler = function(e) {
    var tag = e.target.tagName.toLowerCase();
    if (!_hasClass(body, "disabled-onepage-scroll")) {
        switch(e.which) {
            case 38:
                if (tag != 'input' && tag != 'textarea') moveUp(el)
                break;
            case 40:
                if (tag != 'input' && tag != 'textarea') moveDown(el)
                break;
            case 32:
                if (tag != 'input' && tag != 'textarea') moveDown(el)
                break;
            default: return;
        }
    }
    return false;
}
if(settings.keyboard == true) {
    document.onkeydown = _keydownHandler;
}
return false;
}

我一直在努力解决这个问题,但我对js的了解有限,代码似乎很有意义。是哪里出错了,还是我需要写一个else语句?

刚刚发现,将发布答案,以防其他人遇到这种情况。

if (!_hasClass(body, "disabled-onepage-scroll")) {
    switch(e.which) {
        case 38:
            if (tag != 'input' && tag != 'textarea') moveUp(el)
            break;
        case 40:
            if (tag != 'input' && tag != 'textarea') moveDown(el)
            break;
        case 32:
            if (tag != 'input' && tag != 'textarea') moveDown(el)
            break;
        default: return;
    } 
return true;  //add this
}
return false;