div可編輯文本的選中文本效果

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
    <title>demo</title>
    <style type="text/css">
        .edit_container {
            width: 500px;
            height: 30px;
            background: #599fc2;
            padding: 3px;
            border-radius: 3px;
            line-height: 30px;
        }

        .btn {
            margin-top: 20px;
            width: 80px;
            height: 20px;
            background: #599fc2;
            padding: 3px;
            border-radius: 3px;
            line-height: 20px;
            text-align: center;
            cursor: pointer;
        }

        .enable_edit {
            border: 1px dashed #1248dd;
        }
    </style>
</head>

<body>
    <p>點擊按鈕開啓編輯,失去焦點後關閉編輯功能</p>
    <div class="edit_container" id="test">我是可編輯文本....</div>
    <div class="btn">
        開啓編輯
    </div>

    <script src="jquery-1.11.3.min.js"></script>
    <script>
        $(() => {
            $('.btn').click(() => {
                //增加可編輯的屬性
                $('.edit_container').attr('contenteditable', true)
                //增加編輯時效果
                $('.edit_container').addClass('enable_edit')

                //選中所有文本
                let range = document.createRange();
                range.selectNodeContents($(`.edit_container`)[0]); // document.getElementById('test')
                range.collapse(false);
                let sel = window.getSelection();
                sel.removeAllRanges();
                sel.addRange(range);
            });
            //聚焦時選中所有文本
            $('.edit_container').focus(() => {
                var selection = window.getSelection();
                selection.removeAllRanges();
                var range = document.createRange();
                range.selectNodeContents($(`.edit_container`)[0]); // 需要選中的dom節點 或者使用document.getElementById(id)
                selection.addRange(range);
            });
            //失去焦點時移除掉
            $('.edit_container').blur(() => {
                $('.edit_container').removeAttr('contenteditable')
                $('.edit_container').removeClass('enable_edit')
            });
        });
    </script>
</body>

</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章