当前位置: 首页 > 面试题库 >

如何检测“ shift + enter”并在Textarea中生成新行?

罗昱
2023-03-14
问题内容

当前,如果此人enter在文本区域内按下,则将提交表单
很好,我想要那个。

但是,当他们键入shift+时enter,我希望文本区域移至下一行:\n

我该如何JQuery尽可能简单地用普通JavaScript 做到这一点?


问题答案:

我的解决方案

我想你可以做这样的事情。

编辑: 更改代码以工作,无论插入位置

代码的第一部分是获得插入符的位置。

function getCaret(el) { 
    if (el.selectionStart) { 
        return el.selectionStart; 
    } else if (document.selection) { 
        el.focus();
        var r = document.selection.createRange(); 
        if (r == null) { 
            return 0;
        }
        var re = el.createTextRange(), rc = re.duplicate();
        re.moveToBookmark(r.getBookmark());
        rc.setEndPoint('EndToStart', re);
        return rc.text.length;
    }  
    return 0; 
}

然后在Shift+ Enter在一起时相应地替换textarea值,如果Enter单独按下则提交表格。

$('textarea').keyup(function (event) {
    if (event.keyCode == 13) {
        var content = this.value;  
        var caret = getCaret(this);          
        if(event.shiftKey){
            this.value = content.substring(0, caret - 1) + "\n" + content.substring(caret, content.length);
            event.stopPropagation();
        } else {
            this.value = content.substring(0, caret - 1) + content.substring(caret, content.length);
            $('form').submit();
        }
    }
});


 类似资料:
  • 在为Chromebooks和物理键盘准备Android应用程序时,我希望在编辑文本中区分从物理键盘接收“Enter”(键事件66)和“Shift+Enter”(显然也是键事件66)。我尝试了许多不同的解决方案,例如 活动中的DispatchKeyEvent(KeyEvent事件)。然而,Event.getModifiers()总是返回0,与Event.get转移()一样。KeyEvent.IsSh

  • JavaFX8控制器如何判断Shift、Ctrl、Alt或Enter键位于键盘的左边还是右边? 尝试使用JNativeHook(他们最近移动了),它几乎可以作为一个解决方案,但不能识别一些键,时间不精确,实现起来有点笨拙,尤其是因为我不能为所有平台编译本机代码。许可条款也有点混乱(稳定版本的GPL,在我的情况下不是一个选项,可能会转向LGPL...)。

  • 问题内容: 我想在输入时立即在WebView中打印HTML文本区域的内容。 PS:出于某种原因,我尝试听的,但它不起作用。 问题答案: 如果尝试将JavaFX TextArea对象的内容打印到WebView中,则应将侦听器添加到TextArea而不是WebView。 如果尝试在WebView的HTML页面内的HTML TextArea标记中侦听事件,则应将侦听器添加到文档模型:

  • 问题内容: 是否热衷于使快捷方式仅在“发件人”文本字段中起作用? 问题答案: 使用焦点和模糊侦听器删除和添加快捷键:

  • 问题内容: 我想检测用户是否按下了jQuery。 这怎么可能?需要插件吗? 编辑:看来我需要使用该方法。 我想知道是否有人知道该命令是否存在浏览器问题-就像我应该知道的浏览器兼容性问题一样? 问题答案: jQuery的全部要点是,您不必担心浏览器的差异。我很确定您可以放心在所有浏览器中都为13。因此,请记住这一点:

  • 问题内容: 我想要一个文本区域,可以处理按 Tab 键的情况。 在默认情况下,如果您按 Tab 键,则焦点将离开文本区域。但是,当用户想要在文本区域中输入 Tab 键时会怎样呢? 我可以捕捉到此事件并将焦点返回到文本区域并将标签添加到 当前 光标位置吗? 问题答案: