通过onkeypress事件是输不上任何非数字字符
<input type="text" οnkeypress="return event.keyCode>=48&&event.keyCode<=57" />
通过onkeyup事件是输上后再去掉非数字字符
<input type="text" οnkeyup="value=value.replace(/[^\d]/g,'') ">
<input type="text" οnkeyup="value=(parseInt((value=value.replace(/\D/g,''))==''||parseInt((value=value.replace(/\D/g,''))==0)?'1':value,10))" onafterpaste="value=(parseInt((value=value.replace(/\D/g,''))==''||parseInt((value=value.replace(/\D/g,''))==0)?'1':value,10))">
input输入框只能输入数字而且开头不能为零
<div class="input-choseNum">
<input type="number" id="inp-chooseNum" οninput='this.value=this.value.replace(/^[0]+[0-9]*$/gi,"")' maxlength="5" />
<span class="sureChoose">确定</span><span class="closeChoose">取消</span>
</div>
代码分析:
1、onKeyUp 就是键盘松开后调用的事件。
2、/\D/g 这个就是我这里用的正则表达式。头尾的/符号表示这里面包的是正则表达式;最后一个g表示全文搜索;\D是[^0-9]的简写,表示非数字的意思(因为我们要把非数字换成'')。
3、value=value.replace(/\D/g,'')先用replace方法把非数字的字符替换成'',再赋值给当前text框的value属性。
4、(parseInt((value=value.replace(/\D/g,''))==''||parseInt((value=value.replace(/\D/g,''))==0)?'1':value ,判断替换掉非数字字符后的文本是否为空或者为0,为空货位0则补1,不为空或0就是当前的值了。
5、最后调用parseInt(value,10)方法,把当前的value转成数字值,这么做是为了把类似012这样的字符前面的0去掉(测试经常挑这样的毛病,实在变态!)。这里特别要注意的是,使用parseInt方法的时候,一定要把value后的10这个参数传进去,否则像012这样的字符会被当作8进制的数字来处理的。
6、最后再把这个转换后的数字赋值给value就是了。