TextBox中应用createRange和caretPos的问题。
我用下面一段代码实现了利用Button按钮在TextBox中将字符插入到光标停留处的功能:
function storeCaret (textEl) {
if (textEl.createTextRange)
textEl.caretPos = document.selection.createRange().duplicate();
}
function insertAtCaret (textEl, text) {
textEl.focus();
if (textEl.createTextRange && textEl.caretPos) {
var caretPos = textEl.caretPos;
var selectedString = caretPos.text
caretPos.text =caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?text+ ' ' : text;
}
else {
textEl.value =textEl.value + text;
}
if(selectedString!="" ){
var rng=document.selection.createRange();
rng.collapse(false);
rng.move("character", 0);
rng.select();
}
}
现在遇到的问题是,当TextBox失去焦点后,再去按Button按钮,仍然能插入,但是插入的地方在前一次文本框中光标落的地方,插入字符后,光标落到了字符串的最前面。这样的话,感觉不是很好。
我想要的效果是:
当TextBox失去焦点后,再去按Button按钮,将字符追加到字符串最后,光标也相应的落到最后。