我在网上找了两段代码,一段是纯JS的,一段时Jquery的,但是两段代码都不能很好的支持IE,存JS的对FF倒是支持的很好,但是对IE还是有些问题。我在IE下,插入字符,开始正常,但是多插入几个,就会就跑跑到最前面去。我把纯JS贴出来:function insertAtCursor(myField, myValue) {
//IE support:这段是IE的,但是我测试的时候完全正确,有时候能插对位置,有时候直接插到第一个字符了
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
sel.select();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
// save scrollTop before insert
var restoreTop = myField.scrollTop;
myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos,myField.value.length);
if (restoreTop > 0) {
// restore previous scrollTop
myField.scrollTop = restoreTop;
}
myField.focus();
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
myField.focus();
}
}哪位高手有没有其他的代码,我看网上都是这么一段代码,抄过去抄过来,或者用其他库封装一下。
//IE support:这段是IE的,但是我测试的时候完全正确,有时候能插对位置,有时候直接插到第一个字符了
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
sel.select();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
// save scrollTop before insert
var restoreTop = myField.scrollTop;
myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos,myField.value.length);
if (restoreTop > 0) {
// restore previous scrollTop
myField.scrollTop = restoreTop;
}
myField.focus();
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
myField.focus();
}
}哪位高手有没有其他的代码,我看网上都是这么一段代码,抄过去抄过来,或者用其他库封装一下。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货