我正在使用 jQuery内联编辑插件 Jeditable。值得庆幸的是,Jeditable 提供了一个插件功能来扩展它提供的开箱即用的内联编辑。
我希望不要重新发明轮子——Jeditable 是否已经存在PageDown插件?如果有的话,我的 Google-fu 不会出现任何结果。
我正在使用 jQuery内联编辑插件 Jeditable。值得庆幸的是,Jeditable 提供了一个插件功能来扩展它提供的开箱即用的内联编辑。
我希望不要重新发明轮子——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 文档。
将“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
}
});
我希望我的用户在不编辑标记时将其视为 HTML,因此我必须使用回调和 loadurl Jeditable 参数。加载 url 以 markdown 格式检索要编辑的文本,而回调将新文本转换回 html。