標籤:on() delete eve fse var content lin off 事件
最近在做項目時,有個需求需要改寫鍵盤的backspace事件。
首先是一個可編輯的div,div中含有標籤(li,li為空白標籤)也還有文字。
需求問題:
1、刪除文字時,不能刪除前面的空標籤。
2、標籤可以直接刪除。
此處需要重寫鍵盤的backspace事件。代碼如下:
$(document).on("keydown","#txtEditerBox",function (e) { if(e.keyCode === 8){ var selection = window.getSelection(); var range = selection.getRangeAt(0); // 當 游標 集合到 一點 時, range的文檔內容為空白,需要 重新指定 選擇前一個節點的最後一個文本為刪除的range文檔 if(range.collapsed){ if(range.startOffset===0){ //range.setStart(range.startContainer.nextElementSibling); //range.setStartOffset(range.startContainer.length); range.start = range.startContainer.previousElementSibling; var id = range.start ? range.start.id:""; $(".c-textarea").find("#"+id).remove(); //range.startOffset = range.startContainer.length; }else{ range.setStartOffset(range.startOffset - 1); range.startOffset = range.startOffset - 1; } } console.log(range); // 刪除當前 Range 對象表示的文檔地區。 range.deleteContents(); e.preventDefault(); e.stopPropagation(); }});
js 修改backspace事件