简单的说,ie10以下的文本框的光标位置不会被保存
比如说,你在一个文本框里第5个字符的位置下点击了光标,这时你去其它的地方点一下,然后执行一下该文本框的focus()方法,这时你会发现光标又到文本框最前端了.
而高级浏览器,当你执行focus()时,光标会落在上次点击的位置.
这样就会让很多文本处理功能实现不了,比如说在光标指定问题插入点东西.
解决方法是,在文本框keyup事件中,每次都计算光标位置,存到他的自定义属性中,然后用的时候直接读就行了.
关于如何读取光标位置
function getTxt1CursorPosition() {
var oTxt1 = document.getElementById("txt1");
var cursurPosition = -1;
if (oTxt1.selectionStart) {//非IE浏览器
cursurPosition = oTxt1.selectionStart;
} else {//IE
var range = document.selection.createRange();
//这个功能相当于在光标位置向左划鼠标选中文字,这里面的移动位数超了也无所谓,然后再计算选中文字的数量,就得到了光标的位置
range.moveStart("character", -oTxt1.value.length);
cursurPosition = range.text.length;
}
return cursurPosition;
}
另外,有,blur事件和其它按纽click事件,是先执行click事件,再执行blur事件.