问题在于空格。有时如果插入符号位于空格上,它会忽略空格并找到最后一个字符的位置(即不是空格)。在此 demo 中如果单击字母c的右侧,则将插入符号位置显示为3.然后单击字母d左侧(沿着一个字符),它仍显示插入位置为3.但是,如果先点击d的左侧,则显示位置4(正确的位置)。如果有人可以看看我的jsFiddle,试试这个也许你可以找到一个解决方案。谢谢。
注意,此代码仅适用于IE。
$('input').click(function(){
var Sel = document.selection.createRange();
Sel.moveStart('character', -this.value.length);
CaretPos = Sel.text.length;
$('span').text(CaretPos);
});
答案 0 :(得分:0)
最新IE浏览器中的selectionStart
worked,Firefox&铬。
$('input').click(function(){
this.focus();
/**var Sel = document.selection.createRange();
Sel.moveStart('character', -inelem.value.length);
CaretPos = Sel.text.length;*/
CaretPos = this.selectionStart;
$('span').text(CaretPos);
});
但是,如果您担心支持较旧的IE版本,则可以有条件地调用createRange
而不是selectionStart
。检查this版小提琴。 doGetCaretPosition
基于this链接