javascript - 列表后的 HTML5 内容可编辑段落

标签 javascript jquery wysiwyg contenteditable html-editor

我使用谷歌浏览器。

我需要一个非常小的 HTML 编辑器,我找到了 Simple Edit .非常小的编辑器,正好满足我的需要。然而......这个和许多其他使用 Content Editable 的编辑器都有一个共同的问题。

问题

创建列表后(在最后一个列表项上按 Enter 两次),它会创建一个新的 div。我期望创建一个新的段落标记。

链接

问题

防止 div 的正确方法是什么,而是在列表后添加段落标签?

最佳答案

Bryan Allo 发布的答案没有考虑到您需要将光标放在 div 的末尾。否则,在每次替换操作时,用户都必须按 CTRL-End。

这是我提出的解决方案,也可以在 http://jsfiddle.net/82dS6/ 上看到它的实际应用。 :

function setEndOfContenteditable(contentEditableElement){
    // Taken from http://stackoverflow.com/a/3866442/1601088
    var range,selection;
    if(document.createRange){//Firefox, Chrome, Opera, Safari, IE 9+
        range = document.createRange();
        range.selectNodeContents(contentEditableElement);
        range.collapse(false);
        selection = window.getSelection();
        selection.removeAllRanges();
        selection.addRange(range);
    }
    else if(document.selection){//IE 8 and lower
        range = document.body.createTextRange();
        range.moveToElementText(contentEditableElement);
        range.collapse(false);
        range.select();
    }
}

function replaceDivWithP(el){

    $(el).find('div').each(function(){
        $(this).replaceWith($('<p>' + $(this).html() + '</p>'));
    });
}

$(function(){
    $(".text").simpleEdit();
});

$('.textarea').bind('keyup', function(){
    replaceDivWithP(this);
    setEndOfContenteditable(this);
});


​

关于javascript - 列表后的 HTML5 内容可编辑段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12968170/

相关文章:

javascript - 如何创建一个 Angular 分量的独立实例

javascript - Jquery, ajax, javascript - 通过 id 获取元素

javascript - 如何删除所有特殊字符?

javascript - 如何分隔每个文本框的每个值

ide - 为什么源代码是纯文本的?

javascript - Edge 中的异步滚动 (APZ) 卡顿且有问题;不在 IE 或其他浏览器中

javascript - 如何在 vanilla js 中实现 Observable 行为

javascript - 如何在 IF 语句中使用 (this) 选择元素

javascript - CKEditor 多样式类不起作用

javascript 富文本编辑器