js 修改backspace事件


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM