仅在移动设备上输入整数
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
\D
、input
事件、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" />
我正在使用 <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
\D
、input
事件、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" />