input中连续插入字符

网上类似文章很多。没有一篇是很完整的。。。。。只能自己整理一份,备用。

/*
 * 向表单中插入字符
 * @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();
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值