3

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

这是我正在使用的代码,在我的函数中,由 jquery 在按键上调用:

if ( (e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
    //move to next line here

任何想法如何做到这一点?

4

2 回答 2

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

演示

于 2012-08-02T14:15:34.863 回答
1

现在一切就绪!断线在任何时候都保持位置(同时尝试使用最新的浏览器技术以及 IE 的后备等)。

更新 x2 - jsFiddle 链接

$('#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);
    }
});

借助 2 个功能

function getCaret(el) { }

textarea 中的插入符号位置,从开头开始的字符

function setCaretPosition(el, caretPos) { }

在 html 文本框中设置键盘插入符号位置

于 2012-08-02T14:17:22.720 回答