1、只能输入数字,当输入不符字符删除,光标位置不变
//只能输入数字
function onlyNumTrue(obj){
var reg = /[^\d]/g;
var pos = obj.selectionEnd;//获取光标位置
var val = obj.value; //获取input的值
//如果值存在不符字符将光标位置减一
if (reg.test(val)) {
pos = pos - 1;
9 }
$(obj).val(val.replace(/[^\d]/g, ''));
obj.setSelectionRange(pos,pos);//设置光标位置
}
2、输入框内光标移动
<body>
<input type="text" name="CAL_COM_ID" id="CAL_COM_ID" onkeyup="cky(this)"/> <input type="text" name="CAL_COM_ID1" id="CAL_COM_ID1" onkeyup="value=value.replace(/[^(\(\)\d\&\|)]/g,'')"/> <script type="text/javascript">
function cky(obj)
{
var t = obj.value.replace(/[^(\(\)\d\&\|)]/g,"");
if(obj.value!=t)
obj.value=t;
} </script>
</body>
第一种写法写完后键盘左右键移动,光标可以移动;第二种写法光标不能移动。
3、使用replace时,不能控制光标的位置。
步骤:
1、获取光标位置:var pos = this.selectionEnd;//获取鼠标位置
2、设置光标位置:this.setSelectionRange(pos,pos);//设置鼠标位置
4、input输入框的事件监听
https://blog.csdn.net/yiifaa/article/details/52372022