Я так и не нашел готовый плагин 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();
}
});
Приведенный выше код проходит множество движений в отношении идентификатора элемента, потому что в моем случае у меня может быть несколько редакторов на одной странице.См. PageDown документацию о Markdown.Editor для более подробной информации.
После того, как я добавил тип ввода 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-адрес загрузки извлекает текст для редактирования в формате уценки, а обратный вызов преобразует новый текст обратно в HTML.