Javascript媒体编辑器降价附加图像和更新内容

时间:2016-11-30 04:50:44

标签: javascript jquery markdown medium-editor

<div class="editable" contenteditable="true"></div>
<textarea name="markdown" class="markdown" /></textarea>//display none

new MediumEditor('.editable', {
    extensions: {
        markdown: new MeMarkdown(function (md) {
            document.querySelector(".markdown").textContent = md;
        }),
        img: new imgButton()
    }


$('.editable').append("<img src='abc' />");

我有一个div使用媒体编辑器&amp;中编辑降价

.editable内的用户输入时,textarea将同步。

我也点击了一下按钮,它会将图像追加到.editable

我的问题是仅在.editable keypress

时才会更新

因此,如果我附加文字,textarea将无法同步,除非我再次按.editable内的任意键

任何人都知道如何在追加图像

之后告诉markdown更新

2 个答案:

答案 0 :(得分:1)

试试这个

function updateTextArea(index,editable){
    var textarea = editable.parentNode.querySelector('textarea[medium-editor-textarea-id="' + editable.getAttribute('medium-editor-textarea-id') + '"]');
    if (textarea) {
        textarea.value = editable.innerHTML.trim();
    }
}

$('.editable').append("<img src='abc' />");
$('.editable').each(updateTextArea);

updateTextArea功能将更新与可编辑区域对应的文本区域。

这是我试过的代码

&#13;
&#13;
var editor = new MediumEditor('.editable', {
            buttonLabels: 'fontawesome'
        });
           function updateTextArea(index,editable){
                var textarea = editable.parentNode.querySelector('textarea[medium-editor-textarea-id="' + editable.getAttribute('medium-editor-textarea-id') + '"]');
                if (textarea) {
                    textarea.value = editable.innerHTML.trim();
                }
            }
    $("#addImage").click(function(){
      $('.editable').append("<img src='abc' />");
      $('.editable').each(updateTextArea);
     });
$('.editable').change(updateTextArea);
&#13;
<link href="http://yabwe.github.io/medium-editor/bower_components/medium-editor/dist/css/themes/tim.min.css" rel="stylesheet"/>
<link href="http://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css" rel="stylesheet"/>
<link href="http://yabwe.github.io/medium-editor/bower_components/medium-editor/dist/css/medium-editor.min.css" rel="stylesheet"/>
<script src="http://yabwe.github.io/medium-editor/bower_components/medium-editor/dist/js/medium-editor.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="container">
        <h1>Medium Editor</h1>
        <textarea class="editable medium-editor-textarea" name="markdown" id="markdown">&lt;p&gt;Textarea is now supported&lt;/p&gt;</textarea>
        <input type="button" id="addImage" value="Add Image">
       <input type="button" value="Alert textarea content" onclick="alert(document.getElementById('markdown').value)">
    </div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果您使用编辑器的setContent()方法(文档here),这将允许您添加内容,编辑器将检测更改并触发所有正确的事件。这应包括通知降价扩展内容已更改且应更新降价。

所以,而不是:

$('.editable').append('<img src="abc" />');

试试这个:

editor.setContent(editor.getContent() + '<img src="abc" />');

这也利用了getContent()方法(文档here)。

注意:这些示例假设您仅使用MediumEditor的单个编辑器元素。如果要将多个元素传递到MediumEditor的单个实例中,则可能需要为indexsetContent()

指定getContent()参数的值