javascript - 防止在移动设备上的输入字段中输入小数位

标签 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(可能还有其他)上,数字键盘允许输入 .-

最佳答案

一种可能的解决方案:

<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)">

关于javascript - 防止在移动设备上的输入字段中输入小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47799835/

相关文章:

Android 测试项目 - 读取 Assets 文件来测试纯 java 对象

Android Studio 检测到复制的文件没有更改,因此无法推送到 Git

javascript - 在没有 tree jQuery 插件的情况下使用 jQuery 绘制 JSON 树结构

javascript - ajax 调用后无法更改 css 属性

javascript - 后进先出分区

javascript - jQuery 将事件处理程序连接到被触发的对象的方法

javascript - 使用投影线绘制简单图形

android - PublishSubject 不适用于firstOrError()

javascript - jquery获取流体图像的高度

javascript - $ 未定义 : What does this mean?