【发布时间】:2023-01-23 16:38:38
【问题描述】:
我有一个输入字段,我想将其限制为仅输入数字。 type="text" 在电脑和我的 android 手机上工作正常,但在 iOS 上失败,我仍然可以在其中输入文本。我在网上四处寻找,找到了输入字段的解决方案:
<input onkeypress="return event.charCode >= 48 && event.charCode <= 57" id="priceInput" type="text">
它适用于我迄今为止尝试过的所有设备。但是,我想将此代码用于许多输入字段,并在按下这些输入字段中的键时做更多的事情。因此我想在单独的文件中将它作为 JavaScript 函数运行。我发现 this answer 看起来很有前途并且适用于 android 和桌面:
function isNumber(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
}
<input type="text" onkeypress="return isNumber(event)" />
然而,这在 iOS 上仍然失败,我仍然可以输入所有字符。
问题
- 如何在 iOS 手机上限制输入字段只接受数字?
- iOS 是否有一些阻止功能在 onkeypress 上运行的程序?
【问题讨论】:
-
这里只是一个建议,因为我无法对其进行测试。您是否尝试在返回 false 之前添加
event.preventDefault()? -
@DiegoD,好问题,是的,因为我在另一个答案中找到了它。没有不同
-
为什么不使用模式属性?
-
@BurhamB.Soliman,为什么不告诉我那是什么? :))
-
@eligolf 我认为他指的是类似
<input pattern="[0-9]*" type="text">之类的东西,在 ios 上只会触发带有数字的虚拟键盘,但我认为这不是一个可靠的解决方案。给出的给定答案可能会在任何情况下始终如一地起作用。
标签: javascript html