最近在做項目時,有個需求需要改寫鍵盤的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();
}
});
