Дали на работе задачу, чтобы при вставке таблицы ячейки переносились на новую строку.
В редакторе есть настройки какие теги оставляются при вставке:
1. блочные теги: pasteBlockTags: ['table', 'tbody', 'thead', 'tfoot', 'th', 'tr', 'td', 'ul', 'ol', 'li', 'p'],
2. строчные теги: pasteInlineTags: ['br', 'strong', 'b'],
Я пробовала оставлять из таблицы только тег "td" и делать замену
pasteBlockTags: ['td', 'ul', 'ol', 'li', 'p'],
replaceTags: {
'td': 'p',
},
Но это не работает
Тогда я сделала замену регулярными выражениями, после замены остаются пустые теги "p" и я решила сделать замену пустых тегов третьей регуляркой. Вот все настройки редактора:
var redactor = $R('.js-editor', {
plugins: ['table'],
lang: lang=='rus'?'ru':'ua',
minHeight: '150px',
buttons: ['bold', 'lists'],
buttonsHide: ['table'],
removeNewLines: true,
pasteBlockTags: ['table', 'tbody', 'thead', 'tfoot', 'th', 'tr', 'td', 'ul', 'ol', 'li', 'p'],
pasteInlineTags: ['br', 'strong', 'b'],
callbacks: {
pasteBefore: function(html){
console.log("pasteBefore before regExp "+html);
html = html.replace(/<\/?(table|tbody|thead|tfoot|th|tr|colgroup|col|o:p)[^>]*>/gi, '');
html = html.replace(/td/gi, 'p');
html = html.replace(/<([^>\s]+)[^>]*>(?:\s*(?:<br \/>|<br>| | | | | | | )\s*|\s*)*<\/\1>/gi, '');
console.log("pasteBefore after regExp "+html);
return html;
},
changed: function () {
$('.js-disabled').attr('disabled', false);
},
keyup: function()
{
$("#save_my_data").attr("disabled", false);
}
}
});
Последняя замена регулярным выражением не работает в редакторе, сама замена работает:
Регулярка работает
Ссылка на imperavi redactor