仅在移动设备上输入整数

Integer numeric input only on mobile devices

我正在使用 <input type='text' onkeypress='return isNumberKey(event)'>
我已经尝试过 <input type='number'>,但这允许人们使用句号和 'e'。我只希望人们只允许使用非负整数。

理想情况下,我希望在 Safari 和 Chrome(我相信大多数移动用户只使用这两种浏览器)中只调出数字键盘,但我肯定会接受只允许按非负整数。

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

    return true;
};

您可以将 pattern 属性与 RegExp \Dinput 事件、RegExp.prototype.test()String.prototype.slice() 与参数 0, -1 一起使用] 删除最后一个输入值,如果不是与 pattern 属性

处的 RegExp 匹配的数字

var input = document.querySelector("input");
function handleInput(event) {
  var value = this.value;
  if (new RegExp(this.pattern).test(value)) {
    this.value =  value.slice(0, -1)
  }
}
input.addEventListener("input", handleInput);
<input type="text" pattern="\D" />