Trumbowyg: не работает вставка текста через каретку

#jquery #trumbowyg

#jquery #trumbowyg

Вопрос:

У меня есть кнопка, и при нажатии на нее я хочу добавить некоторый текст внутри редактора.

Я видел некоторые проблемы, в которых люди предлагали решение, и я попробовал его. Но когда я использую restoreRange и ExecCmd с insertHtml, он не вставляет курсор, только если что-то было введено в редакторе ранее, например, символ или пробел.

Другими словами, при нажатии на редактор он не вставляет туда, где был курсор, когда я нажимал, но при написании чего-либо это происходит.

Как если бы restoreRange работал только при написании чего-либо.

Проблема возникает со следующим кодом:

 $('#editor').trumbowyg({
  btnsDef: {
    testButton: {
      fn: function () {
        // Restore the previous position
        $("#editor").trumbowyg('restoreRange');
        // Add text in the current position 
        $("#editor").trumbowyg('execCmd',
        {
          cmd: 'insertHTML',
          param: 'Dummy text',
          forceCss: false
        });
      },
      title: 'test button',
      text: 'insert text',
      hasIcon: false
    }  
  },
  btns: [
    ['testButton'],
  ]
});
  

Воспроизвел проблему здесь:
https://jsfiddle.net/95nqv076 /

Я что-то упускаю?

Ответ №1:

Найдено решение: сохранить диапазон при размытии и при фокусировке.

 $('#editor').trumbowyg({
btnsDef: {
  testButton: {
    fn: function () {
      $("#editor").trumbowyg('restoreRange');
      $("#editor").trumbowyg('execCmd',
        {
      cmd: 'insertHTML',
          param: 'Dummy text',
          forceCss: false
        });
      },
      title: 'Button tooltip',
      text: 'Displayed button name',
      hasIcon: false
    }
  },
  btns: [
    ['testButton'],
  ]
}).on('tbwblur', function(){
  $("#editor").trumbowyg('saveRange');
}).on('tbwfocus', function(){
  $("#editor").trumbowyg('saveRange');
});
  

Надеюсь, это кому-то поможет!