我正在使用jQuery inline editing plugin Jeditable。值得庆幸的是,Jeditable provides a plugin capability扩展了它提供的开箱即用的内联编辑功能。

我希望不要重新发明轮子-像这样的Jeditable已有PageDown插件了吗?如果可以,我的Google-fu没有得到任何结果。

最佳答案

我从来没有找到一个随时可以使用的Jeditable PageDown插件,所以我写了自己的插件。下面的示例过于具体,无法直接使用,但对于任何想完成类似任务的人,都应提供足够体面的轮廓。

将“markdown”输入类型添加到Jeditable的代码:

var converter = Markdown.getSanitizingConverter();

$.editable.addInputType('markdown', {
    element: function(settings, original) {
        var editorId = original.id.substring(original.id.lastIndexOf("-"));
        var input = $('<textarea />');
        input.attr('id', 'wmd-input' + editorId);

        var panel = $('<div class="wmd-panel" />');
        panel.append('<div id="wmd-button-bar' + editorId + '" />');
        panel.append(input);
        panel.append('<div id="wmd-preview' + editorId + '" />');

        $(this).append(panel);
        return (input);
    },
    plugin: function(settings, original) {
        var editorId = original.id.substring(original.id.lastIndexOf("-"));
        var editor = new Markdown.Editor(converter, editorId);
        editor.run();
    }
});

上面的代码经过了一系列关于元素id的旋转,因为在我的情况下,我可以在一个页面上有多个编辑器。有关更多信息,请参见关于Markdown.Editor的PageDown documentation

将“markdown”输入类型添加到Jeditable之后,只需将其与以下代码一起使用即可:
$('.editable-element-area').editable('http://jsfiddle.net/echo/jsonp/', {
    onblur: 'submit',
    type: 'markdown',
    indicator: 'Saving...',
    loadurl: 'http://jsfiddle.net/echo/jsonp/', // retrieve existing markdown
    callback: function(value, settings) {
        $(this).html(converter.makeHtml(value)); // render updated markdown
    }
});​

我希望我的用户在不编辑Markdown时将其视为HTML,因此我必须使用callback和loadurl Jeditable parameters。加载网址以markdown格式检索要编辑的文本,而回调将新文本转换回html。

10-05 21:05