如何在javascript中更改ctrl + del行为

时间:2018-05-17 12:08:57

标签: javascript jquery html html5 ckeditor

我必须限制用户在textarea中删除特定HTML标记中的这些单词(考虑我有自定义标记)。

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

可以删除不在t标记中的字词 我尝试了一些没有任何帮助的逻辑。

是否有可能获得 ctrl + del 关键字的选择范围?

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 :(得分:1)

不幸的是,当您通过示例准确描述所需内容时,您的描述非常糟糕,因此没有人真正知道您希望在文本中发生什么。

这是我刚刚制作的Fiddle

它注意到selected text和第一个突出显示的文本容器的ID

  

选择文字并按CTRL + Del

答案 1 :(得分:0)

如果您使用文本区域,则可以让用户删除它,然后再将其复制到内部。但是,如果用户不应该干扰它,为什么要使用文本区域?我误解了你想要的功能吗?

$(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
    } 
  }
});