Как изменить поведение Ctrl + Del в JavaScript - PullRequest
0 голосов
/ 17 мая 2018

Я должен запретить пользователю удалять такие слова, которые находятся в определенном теге HTML (если у меня есть собственный тег) в текстовой области.

<div>
    You can Delete Me
    <t>
        DontDeleteMe
    </t>
</div>

Слова, отсутствующие в теге t, могут быть удалены.
Я пробовал немного логики, ничего не помогает.

Есть ли возможность получить диапазон выбора ключевых слов ctrl + del do?

case 46:
  { //DEL
    if (range.startOffset == startNode.getLength()) {
      var ancestor = endNode.$;
      while (ancestor != null) {
        var next = ancestor.nextSibling;
        if (next != null) {
          console.log("Next = " + next);
          var node = new CKEDITOR.dom.node(next);
          cancelEvent = node.isReadOnly();
          break;
        }
        ancestor = ancestor.parentNode;
      }
    }
    break;
  }

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Если вы используете текстовую область, вы можете просто позволить пользователю удалить ее, а затем снова скопировать ее внутрь. Но зачем использовать текстовую область, если пользователь не должен мешать ей? Я неправильно понял функцию, которую вы хотите?

$(document).on('keydown', function(evt) {
  if (evt.ctrlKey && evt.keyCode == 46) {             // Ctrl + Del key pressed
    if (evt.target.id == 'customTextArea') {          // Custom tag selected
      $('#customTextArea').text('Don't delete me!');  // Copy old text in text area
    } 
  }
});
0 голосов
/ 17 мая 2018

К сожалению, ваше описание довольно плохое, когда речь идет о точном описании того, что вам нужно, с помощью примеров, поэтому никто точно не знает, что вы хотите, чтобы произошло с текстом.

Вот моя скрипка Я только что сделал.

Он отмечает selected text и ID первого выделенного текстового контейнера.

Выберите текст и нажмите CTRL + Del.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...