首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery contenteditable enter“当有人按enter时,我如何触发shift- enter ?”

jquery contenteditable enter“当有人按enter时,我如何触发shift- enter ?”
EN

Stack Overflow用户
提问于 2009-10-22 09:32:56
回答 1查看 3.4K关注 0票数 7

在chrome的contenteditable中按enter键时,将插入div。这干扰了我的标记,我需要它是br。

我知道shift-enter是br。解决这个问题的最佳方法是什么?

谢谢。

重新定义问题:当有人按enter时如何触发shift- enter?

我试着写了这样的东西:

代码语言:javascript
复制
$(document).keyup(function hotkeys(e) { 
    if (e.which == 13)
    {
        e = jQuery.Event("keydown")
        e.which = 16;
        $(document).trigger(e);
        e.which = 13;
        $(document).trigger(e);
        alert("trigger");
    }
});

它不起作用。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-11-10 07:34:44

假设是rangy.js

代码语言:javascript
复制
$('#myeditelement').on('keydown', function(ev){
    if (ev.which === 13) { insertNewLine(ev) }
})

然后,

代码语言:javascript
复制
function insertNewLine(ev){
    var nodeA, nodeB, sel, range

    if (ev.stopPropagation) { ev.stopPropagation() }
    if (ev.preventDefault) { ev.preventDefault() }

    sel = rangy.getSelection()
    range = sel.getRangeAt(0)

    range.deleteContents()
    nodeA = document.createElement('br')
    range.insertNode(nodeA)
    range.setStartAfter(nodeA)
    nodeB = document.createElement('span')
    range.insertNode(nodeB)
    range.selectNodeContents(nodeB)
    sel.removeAllRanges()
    sel.addRange(range)
    sel.collapseToEnd()
  }

截至2017年11月,在Chrome、Opera、Edge中进行了测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1604576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档