网上类似文章很多。没有一篇是很完整的。。。。。只能自己整理一份,备用。
/*
* 向表单中插入字符
* @param HTMLObject sInput 输入框DOM对象
* @param string sText 要插入的字符
* @return void
*/
function insertChar(sInput,sText)
{
if(document.all)
{
if(sInput.createTextRange && sInput.caretPos)
{
var caretPos = sInput.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length -1) == '' ? sText + '':sText;
}
else{sInput.value += sText}
}
else
{
if(sInput.setSelectionRange)
{
var rangeStart = sInput.selectionStart,rangeEnd = sInput.selectionEnd;
sInput.value = sInput.value.substring(0,rangeStart) + sText + sInput.value.substring(rangeEnd);
//处理连续插入 这个是重点
sInput.focus();
var l = sText.length;
sInput.setSelectionRange(rangeStart + l , rangeStart + l);
sInput.blur();
}
else{sInput.value += sText}
}
}
//绑定事件 只针对IE 用于记住表单内的操作
document.onload = function()
{
var oInput = document.getElementById("demoInput");
if(document.all)
{
oInput.onselect = function(){
setCaretPos(oInput);
}
oInput.onclick = function(){
setCaretPos(oInput);
}
oInput.onkeyup = function(){
setCaretPos(oInput);
}
}
}
//设置CaretPos o 为DOM对象
function setCaretPos(o)
{
if(o.createTextRange)
{
o.caretPos = document.selection.createRange().duplicate();
}
}