天天看點

可編輯 div 之讓光标聚焦到内容末尾

在網上找了好久,終于解決了這個問題。這裡記錄一下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>測試</title>
<!-- 引入jQuery -->
<script type="text/javascript" src="assets/js/jquery-1.12.4.min.js"></script>
<style type="text/css">
#div {
	border: 1px solid gray;
	width: 800px;
	height: 41px;
}
</style>
</head>
<body>

<div id="div" contenteditable="true">點選按鈕把圖檔拼接過來...</div>
<button id="btn" onclick="btnClick()">光标聚焦到最後</button>

<script type="text/javascript">
function btnClick() {
	//建立一個圖檔元素
	var img = document.createElement('img');
	img.src = '//www.baidu.com/img/baidu_jgylogo3.gif';
	
	//把圖檔放到div裡,并讓光标聚焦到内容最後
	var div = document.getElementById('div');
	div.appendChild(img);
	//這裡如果使用"div.focus()",則光标總是出現在最前面
	focusEnd(div);
}

//将光标聚焦到可編輯div内容末尾(el為DOM對象)
function focusEnd(el){
    el.focus();
    if($.support.msie) {
        var range = document.selection.createRange();
        this.last = range;
        range.moveToElementText(el);
        range.select();
        document.selection.empty(); //取消選中
    } else {
        var range = document.createRange();
        range.selectNodeContents(el);
        range.collapse(false);
        //傳回一個Selection對象,表示使用者選擇的文本範圍或光标的目前位置
        var sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
    }
}
</script>
</body>
</html>
           

參考連結:http://www.cnblogs.com/jonie-wong/p/5519822.html

繼續閱讀