【问题标题】:HTML onkeypress works in HTML but not through JavaScript function on iOSHTML onkeypress 在 HTML 中工作,但在 iOS 上不能通过 JavaScript 函数工作
【发布时间】: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;
}
&lt;input type="text" onkeypress="return isNumber(event)" /&gt;

然而,这在 iOS 上仍然失败,我仍然可以输入所有字符。

问题

  1. 如何在 iOS 手机上限制输入字段只接受数字?
  2. iOS 是否有一些阻止功能在 onkeypress 上运行的程序?

【问题讨论】:

  • 这里只是一个建议,因为我无法对其进行测试。您是否尝试在返回 false 之前添加 event.preventDefault()
  • @DiegoD,好问题,是的,因为我在另一个答案中找到了它。没有不同
  • 为什么不使用模式属性?
  • @BurhamB.Soliman,为什么不告诉我那是什么? :))
  • @eligolf 我认为他指的是类似 &lt;input pattern="[0-9]*" type="text"&gt; 之类的东西,在 ios 上只会触发带有数字的虚拟键盘,但我认为这不是一个可靠的解决方案。给出的给定答案可能会在任何情况下始终如一地起作用。

标签: javascript html


【解决方案1】:

您找到的 sn-p 很旧,并且使用 whichkeyCode 属性,这两个属性都已弃用。

而是使用 code 和/或 key 属性来确定按下了哪个键盘按钮。

const input = document.querySelector('input');
input.addEventListener('keypress', isNumber);

const allowedKeys = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

function isNumber(event) {
  if (!allowedKeys.includes(event.key)) {
    event.preventDefault();
  }
}
&lt;input type="text" /&gt;

【讨论】:

    【解决方案2】:
    function isNumber(e) {
        event = e.value;
    if(event = ""){
    

    console.log("空") }

        return true;
    }
    
    <input type="text" onkeypress="return isNumber(event)" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      相关资源
      最近更新 更多