Как ограничить ввода заголовков в TinyMCE?

Чтобы ограничить ввод заголовков в TinyMCE в сочетании с Vue.js, вам потребуется использовать настройки плагина и выполнить несколько дополнительных шагов.

Первым шагом будет настройка TinyMCE с помощью опций плагина valid_elements и valid_children, которые определяют разрешенные теги и их дочерние элементы. Например, чтобы ограничить заголовки до <h1> и <h2>, вы можете установить следующие опции:

tinymce.init({
  // ... другие настройки ...

  valid_elements: 'h1,h2',
  valid_children: '+body[h1,h2]',

  // ... другие настройки ...
});

В этом примере мы указали, что разрешены только теги <h1> и <h2>, а внутри тегов <h1> и <h2> разрешены только теги <body>. Это предотвратит ввод других заголовков или элементов внутри заголовка.

Вторым шагом будет добавление валидации в вашем Vue.js компоненте. Вы можете добавить функцию, которая будет проверять содержимое TinyMCE при отправке формы или редактировании значения. Например, вы можете добавить следующую функцию в вашем компоненте:

methods: {
  validateTinyMCEContent() {
    const content = tinymce.get('editor-id').getContent();
    const regex = /<(?!/?(h1|h2)[s>]).*?>/gi;
    if (regex.test(content)) {
      // Обнаружено недопустимое содержимое
      return false;
    } else {
      // Содержимое прошло валидацию
      return true;
    }
  },

  // ... другие методы ...
}

В этом примере мы извлекаем содержимое TinyMCE с помощью метода getContent() и затем используем регулярное выражение, чтобы проверить, нет ли недопустимых тегов (за исключением <h1> и <h2>). Если обнаружено недопустимое содержимое, функция возвращает false, что может быть использовано для предотвращения отправки формы или ввода значений.

Не забудьте указать ID редактора TinyMCE в методе tinymce.get('editor-id').getContent(), заменив 'editor-id' на реальный ID вашего редактора.

Таким образом, вы можете использовать как настройки TinyMCE, так и валидацию в компоненте Vue.js для ограничения ввода заголовков в TinyMCE.