移动端中,有一个div标签,设置了contenteditable="true":
<div class="ipt-multi" contenteditable="true"></div>
当输入超过500的时候,给超出的字数添加一个样式(颜色为红色)
this.contentNode.bind("keyup change", function () {
var content = self.getContent();
if (content.length > 500) {
// 给文本输入框添加错误样式
if (content.length > self.MAX_CONTENT_LENGTH) {
var newContent = content.substring(0, self.MAX_CONTENT_LENGTH) + "<span style='color: #df0616'>" + content.substring(self.MAX_CONTENT_LENGTH, content.length) + "</span>";
$(".ipt-multi").focus().html(newContent);
self.po_Last_Div($(".ipt-multi"));
}
}
});
但是输入后,光标跑到最前面去了,我试着加了这样的一段代码:
po_Last_Div: function(obj) {
if (window.getSelection) {//ie11 10 9 ff safari
obj.focus(); //解决ff不获取焦点无法定位问题
var range = window.getSelection();//创建range
range.selectAllChildren(obj);//range 选择obj下所有子内容
range.collapseToEnd();//光标移至最后
}
else if (document.selection) {//ie10 9 8 7 6 5
var range = document.selection.createRange();//创建选择对象
//var range = document.body.createTextRange();
range.moveToElementText(obj);//range定位到obj
range.collapse(false);//光标移至最后
range.select();
}
},
报了以下的错误:
feedback-min.js:formatted:1006 Uncaught TypeError: Failed to execute 'selectAllChildren' on 'Selection': parameter 1 is not of type 'Node'.
at Object.po_Last_Div (feedback-min.js:formatted:1006)
at HTMLDivElement.<anonymous> (feedback-min.js:formatted:992)
at HTMLDivElement.n.proxy (base-min.js:1)
请问怎么解决这个错误,从而达到超过限制输入字数光标定位到最后面?
添加“[0]”取对象 self.po_Last_Div($(".ipt-multi")[0]);