防止在移动设备上输入小数位

时间:2017-12-13 18:26:23

标签: javascript android jquery html google-chrome

我有这个javascript代码,在桌面浏览器上运行良好,以确保用户只能输入字符1到9。

但是,在Android上的Chrome测试中,显示的键盘包含该字段接受的短划线和句点字符。我该如何防止这种情况?

    function isNumberKey(evt) {
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
        return true;
    }

更新:

这就是我在HTML中使用该功能的方法:

  <input type="number" class="form-control" 
         onkeypress="return isNumberKey(event)" />

我有另一个功能,以防止能够将非数字字符复制并粘贴到代码中。

    $(document).ready(function() {
        $('#number').bind("cut copy paste drag drop", function(e) {
            e.preventDefault();
        });     
    });

如果所有其他方法都失败了,那就是服务器端验证。

我真的想在前端停止小数位。请记住我指定的字符范围在qwerty键盘上限制了这一点 - 但是在Android(可能还有其他人)上,数字键盘允许输入.-

2 个答案:

答案 0 :(得分:0)

尝试使用HTML属性min和max来设置数字范围,输入type = number以仅允许数字。

Quantity (between 1 and 5): <input type="number" name="quantity" min="1" max="5">

答案 1 :(得分:0)

一种可能的解决方案:

<script>
function onlyNumbers(num){
   if ( /[^0-9]+/.test(num.value) ){
      num.value = num.value.replace(/[^0-9]*/g,"")
   }
}
</script>
<input type="text" onkeyup="onlyNumbers(this)">