本文主要是介绍js获得光标位置和键的ASCLL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
input输入框中,不允许输入某些特殊字符,当输入特殊字符时替换成空。
问题:绑定keyup事件,为了用户输入方便,当用户点击方向键时进行修改,也会触发keyup事件,这时光标会跳到最后一位。。。。
解决方案一:可以用keycode键的ASCll排除掉,但是点击键盘的其他键光标还是会跳到最后一位。
解决方案二:先获得光标的位置信息,然后进行数据处理操作,最后定位到原来光标的位置。
代码如下:
//绑定keyup事件,调用replaceStr()函数
function replaceStr(){//获得光标位置var ctrl= document.getElementById('preInfo');var CaretPos = 0; // IE Support if(!+"\v1"){if (document.selection){ctrl.focus ();var Sel = document.selection.createRange ();Sel.moveStart ('character', -ctrl.value.length);CaretPos = Sel.text.length;}}// Firefox support else if (ctrl.selectionStart || ctrl.selectionStart == '0') {CaretPos = ctrl.selectionStart;//IE中有event,火狐中arguments.callee.caller.arguments[0] || window.eventevent=arguments.callee.caller.arguments[0] || window.event;}//alert(CaretPos);//打印光标位置//alert(event.keyCode)//打印键的ASCLLif((event.keyCode == 188)||(event.keyCode == 190)||(event.keyCode == 16)||(event.keyCode ==222)){//当键盘输入"" & < >特殊符号时,执行替换为空串。var replaceStr=document.getElementById('preInfo').value;replaceStr=replaceStr.replace(/[\"\&\=\:\<\>]+/g,"");document.getElementById('preInfo').value=replaceStr;}//设置光标位置//if(!+"\v1"){if(ctrl.setSelectionRange){ctrl.focus();ctrl.setSelectionRange(CaretPos,CaretPos);console.log(CaretPos);} else if (ctrl.createTextRange) {var range = ctrl.createTextRange();range.collapse(true);range.moveEnd('character', CaretPos);range.moveStart('character', CaretPos);range.select();}//}
}
这篇关于js获得光标位置和键的ASCLL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!