天天看点

可编辑 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

继续阅读