javascript - Firefox keydown退格问题

标签 javascript jquery events firefox keydown

我正在构建终端仿真并遇到了在 Firefox 中捕获退格键的问题。我能够在提示符下获取第一个退格键并删除输入中的最后一个字符,但它不会持续存在并删除多个字符。

实际网站:http://term.qt.io/

此处复制:http://jsfiddle.net/BgtsE/1/

JavaScript 代码

function handleKeys(e){
    var evt = e || window.event;
    var key = evt.charCode || evt.keyCode;
    if(evt.type == "keydown")
    {
        curr_key = key;
        if(key == 8)
        {
            evt.preventDefault();
            if(0 < $('body').text().length)
                $('body').text($('body').text().slice(0,-1));
        }
    }
    else if(evt.type == "keypress")
    {
        if(97 <= key && key <= 122)
        {
            if(curr_key != key)
                $('body').append(String.fromCharCode(key));
        }
        else
            $('body').append(String.fromCharCode(key));
    }
}
$(function(){
    $('html').live({
        keydown:function(e){
            handleKeys(e);
        },
        keypress:function(e){
            handleKeys(e);
        }
    })
})​

最佳答案

试试这个:http://jsfiddle.net/NBZG8/1/

您需要处理 keydown 和 keypress 中的退格键以支持 Chrome 和 Firefox

function handleKeys(e){
    var evt = e || window.event;
    var key = evt.charCode || evt.keyCode;

    if (evt.type == "keydown") {
        curr_key = key;
        if(key == 8 && !$.browser.mozilla) {
            backspaceHandler(evt);
        }
    } else if (evt.type == "keypress") {
        if (key == 8) {
            backspaceHandler(evt);
        } else if (97 <= key && key <= 122) {
            if(curr_key != key) {
                $('body').append(String.fromCharCode(key));
            }
        } else {
            $('body').append(String.fromCharCode(key));
        }
    }
}

function backspaceHandler(evt) {
    evt.preventDefault();
    if(0 < $('body').text().length) {
        $('body').text($('body').text().slice(0,-1));
    }  
};

$(function(){
    $('html').live({
        keydown : handleKeys,
        keypress : handleKeys
    })
})​

关于javascript - Firefox keydown退格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14050086/

相关文章:

c++ - 如何获取所有可用的事件日志名称?

javascript - 在加载之前发送函数名称?

javascript - 使用 javascript 项目运行 Sonarqube 本地分析的最佳方式

javascript - React 16.0.0 父子孙子。更新 Parent 中的状态不会更新 GrandChild

javascript - 如何将对象分配给数组中的正确对象? react native

javascript - 使用来自区域标记的 Jquery(从 SSRS 报告生成)打开新的外部 URL 作为在框架(不是 iframe)中弹出

java - 按下并拖动鼠标时忽略 .setOnMouseMoved()

jquery - 如何水平对齐 bootstrap 3 radio 和 radio 的标签?

javascript - 检查是否选择了单选按钮

javascript - 单击、输入、更改复选框?