下面js是验证表单只能输入数字的,但是用键盘左右键的时候,一直跳到文字的最后,请问这要怎么改呢,谢谢function inp(obj){
var regStrs = [
['^0(\\d+)', '$1'], //禁止录入整数部分两位以上,但首位为0
['[^0-9\]', ''] //禁止录入任何非数字和点
];
for(i=0; i<regStrs.length; i++){
var reg = new RegExp(regStrs[i][0]);
obj.value = obj.value.replace(reg, regStrs[i][1]);
}
}
<input name="" type="text" value="" onKeyUp="inp(this)">
var regStrs = [
['^0(\\d+)', '$1'], //禁止录入整数部分两位以上,但首位为0
['[^0-9\]', ''] //禁止录入任何非数字和点
];
for(i=0; i<regStrs.length; i++){
var reg = new RegExp(regStrs[i][0]);
obj.value = obj.value.replace(reg, regStrs[i][1]);
}
}
<input name="" type="text" value="" onKeyUp="inp(this)">
var _value = "";
function inp(obj){
if(_value==obj.value) return;
var regStrs = [
['^0(\\d+)', '$1'], //禁止录入整数部分两位以上,但首位为0
['[^0-9\]', ''] //禁止录入任何非数字和点
];
for(i=0; i<regStrs.length; i++){
var reg = new RegExp(regStrs[i][0],"g");
obj.value = obj.value.replace(reg, regStrs[i][1]);
}
_value = obj.value;
}
var val=obj.value;
//obj.focus();
bj.value="";
obj.value=val;
//解决方法:判断输入框的值有没有变化才触发正则替换。
<input name="" type="text" value="" onKeyUp="inp(this)">
<script type="text/javascript">
var v="";
function inp(obj){
if(obj.value!=v){
v=obj.value;
obj.value=obj.value.replace(/^0(\d+)+/g,'$1').replace(/[^\d\.]/g,'');
}
}
</script>