Qurel
@Qurel

Почему в imperavi redactor не работает последняя замена регуляркой?

Дали на работе задачу, чтобы при вставке таблицы ячейки переносились на новую строку.

В редакторе есть настройки какие теги оставляются при вставке:
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>|&nbsp;|&thinsp;|&ensp;|&emsp;|&#8201;|&#8194;|&#8195;)\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
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы