如何同时检测“enter”键和“shift”键以插入换行符

时间:2015-03-16 21:34:50

标签: javascript jquery

我正在尝试创建一个笔记系统。无论你在表格中输入什么,都会被放入div中。当用户点击 Enter 时,他们会提交注释。但是我想这样做,当他们点击 Shift + Enter 时,它会创建一个换行符,就像他们正在键入的那样(如skype)。这是我的代码:

$('#inputpnote').keypress(function(event){

    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode=='13' && event.shiftKey){
        $("inputpnote").append("<br>");
    }
    else if(keycode == '13'){
        var $pnote = document.getElementById("inputpnote").value;
        if ($pnote.length > 0) {
            $("#pnotes-list").append("<div class='pnote-list'><li>" + $pnote + "</li></div>");
            $('#inputpnote').val('');
        }
    }

});

#inputpnote是用户输入注释的表单,#pnotes-list是注释附加到的位置。提前谢谢!

1 个答案:

答案 0 :(得分:2)

我认为为此您必须设置两个全局变量,1表示shitftKeyPress,1表示enterKeyPress,然后您需要keydown和keyup来设置这些值,然后检查是否它们都是正确的,因为你的逻辑说,当按下一个键时,执行这个代码,如果你按一个键然后按另一个键,唯一会发生的是该函数将被调用两次。

编辑: 示例代码:

var hasPressedShift = false;
var hasPressedEnter = false;

$('#inputpnote').keydown(function(event){
    if(shiftkey) {
        hasPressedShift = true;
    }

    if(enterKey) {
        hasPressedEnter = true;
    }
});

$('#inputpnote').keyup(function(event){
    if(shiftkey) {
        hasPressedShift = false;
    }

    if(enterKey) {
        hasPressedEnter = false;
    }
});

$('#inputpnote').keypress(function(event){
    if(hasPressedShift && hasPressedEnter) {
        // Do something
    }
});

这是一个快速模拟,但它与它的外观相似