首页 > 解决方案 > 使用 Javascript 或 jQuery 防止在文本字段中输入数字

问题描述

我要求避免在文本类型输入字段中输入数字。我的应用程序仅用于 iPhone 和 Android 等设备。

我尝试使用以下代码:

$("#custName-info").keypress(function (event) {
            alert(event.charCode);
            var inputValue = event.charCode;
            if (!(inputValue >= 65 && inputValue <= 120) && (inputValue != 32 && inputValue != 0)) {
                event.preventDefault();
            }
        });

JSFIdle

在这里,代码在 iPhone 上运行得很好,但在 Android 设备上却不行。在调查它时,我发现了以下信息:

  1. keypress 已弃用,因此应避免使用。但如果这就是原因,为什么它可以在我的 iPhone 或 Chrome 设备模拟器上运行?
  2. 人们建议使用以下三个替代事件中的任何一个:keyup, keydown, input, change
  3. 我进一步发现这三个事件中的任何一个都不适用于设备中的我,因为它们没有让我charCode识别数字输入。
  4. 有一些东西,keyCode但后来我不明白charCode和有什么区别keyCode

所以我对这个问题的最后一句话是,“我怎样才能阻止用户在文本字段中输入数字?iPhone 和 Android 设备中使用的 Web 应用程序”。

标签: javascriptjqueryjquery-events

解决方案


这对你有用吗?

小提琴

$("#custName-info").on("input",function(event) {
  var inputValue = this.value;
  console.log(inputValue);
  this.value = this.value.replace(/[0-9]/g,"")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<input type="text" id="custName-info" />

请访问https://bugs.chromium.org/p/chromium/issues/detail?id=118639#c283


原来的答案不起作用:

我按照建议替换了keypressforkeydowncharCodeforwhich

JavaScript KeyCode 与 CharCode

FIDDLE - 仍然适用于 iOS

$("#custName-info").on("keydown",function(event) {
  var inputValue = event.which;
  console.log(inputValue);
  if (!(inputValue >= 65 && inputValue <= 120) && (inputValue != 32 && inputValue != 0)) {
    event.preventDefault();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<input type="text" id="custName-info" />


推荐阅读