禁止使用Javascript或jquery在文本字段中输入数字

时间:2018-06-20 09:48:07

标签: javascript jquery javascript-events

我需要避免在文本类型输入字段中输入数字。我的应用程序仅在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();
            }
        });

JSFIddle

此处,该代码在iPhone上可以正常使用,但在Android设备上不起作用。在进行调查时,我发现了以下信息:

    不推荐使用
  1. keypress,因此应避免使用它。但这是为什么,为什么它可以与我的iPhone或Chrome设备模拟器一起使用?
  2. 人们建议使用以下三个替代事件之一:keyup, keydown, input, change
  3. 我进一步发现这3个事件中的任何一个都不对我有效,因为它们没有给我charCode来标识数字输入。
  4. keyCode上有东西,但是我不明白charCodekeyCode有什么区别

因此,我对这个问题的最后一句话是:“如何防止用户在文本字段中输入数字?iPhone和Android设备中使用的Web应用程序”。

1 个答案:

答案 0 :(得分:3)

这对您有用吗?

FIDDLE

$("#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


无效的原始答案:

按照我的建议,我用keypress替换了keydown,用charCode替换了which

JavaScript KeyCode vs 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" />