Javascript 当用户点击ctrl+;进入?

Javascript 当用户点击ctrl+;进入?,javascript,jquery,Javascript,Jquery,我正在处理一个文本区域,如果用户点击enter,它会导致表单提交,但是如果他点击ctrl+enter,我希望它移动到下一行 这是我正在使用的代码,在我的函数中,jquery在keypress上调用该函数: if ( (e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey) //move to next line here 有什么办法吗 $('.parentElementClass').on('keyup', 'textarea

我正在处理一个文本区域,如果用户点击enter,它会导致表单提交,但是如果他点击ctrl+enter,我希望它移动到下一行

这是我正在使用的代码,在我的函数中,jquery在keypress上调用该函数:

if ( (e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
    //move to next line here
有什么办法吗

$('.parentElementClass').on('keyup', 'textarea', function(e) {
    if(e.ctrlKey && (e.which == 13 || e.keyCode == 13)) {
        $(this).val(function(i, val) {
            return val + '\n';
        });
    }
});

现在一切都准备好了!任意点的特征线&它保持位置(同时尝试使用最新的浏览器技术和IE回退等)

借助2个函数

函数getCaret(el){}

函数setCaretPosition(el,caretPos){}


您不能直接使用e.preventDefault()吗;然后将\n添加到textarea值?如果您能添加更多示例代码、textarea、绑定等,我将不胜感激。给我们一个JSFIDLE代码片段的奖励点:)刚刚完成了@Robin
e下面的一个工作示例。preventDefault()
在这里什么都不做,因为
键控
不是可取消的事件。应该全部设置好!有什么原因说明shift-enter不起作用吗?
$('#sillyTextarea').keydown(function (e) {

    if (e.keyCode === 10 || e.keyCode  == 13 && e.ctrlKey) {
        // Ctrl-Enter pressed
        // keyCode 10 is actually for Chrome (whacky I know...)

        var el = document.getElementById('sillyTextarea'),
            allText = $(this).val(),
            currentPos = getCaret(el),
            beforeText = allText.substr(0, currentPos),
            afterText = allText.substr(currentPos);

        $(this).val(beforeText + '\n' + afterText);

        setCaretPosition(el, currentPos);
    }
});