如何强制输入只允许字母?

IT技术 javascript jquery input input-field
2021-03-21 20:17:22

在这里使用 jQuery,但是无法阻止将数字输入到输入字段中

http://codepen.io/leongaban/pen/owbjg

输入

<input type="text" name="field" maxlength="8"
    title="Only Letters"
    value="Type Letters Only"
    onkeydown="return alphaOnly(event);"
    onblur="if (this.value == '') {this.value = 'Type Letters Only';}"
    onfocus="if (this.value == 'Type Letters Only') {this.value = '';}"/>

jQuery

function alphaOnly(event) {

  alert(event);

  var key;

  if (window.event) {
    key = window.event.key;
  } else if (e) {
    key = e.which;
  }
  //var key = window.event.key || event.key;
  alert(key.value);
  return ((key >= 65 && key <= 90) || (key >= 95 && key <= 122));

}

我在这里看到了很多关于如何仅限于数字的示例,并且我使用了正确的 az 和 AZ 键码。你看到我做错了什么吗?

6个回答

短ONELINER :

<input onkeypress="return /[a-z]/i.test(event.key)" >

对于所有Unicode字母试试这个正则表达式/\p{L}/u...) -这里是工作的例子:)

此处允许粘贴数值
2021-04-27 20:17:22

该属性event.key给了我一个未定义的值。相反,我使用了event.keyCode

function alphaOnly(event) {
  var key = event.keyCode;
  return ((key >= 65 && key <= 90) || key == 8);
};

请注意,值 8 用于退格键。

非常感谢!我也在这里找到了答案:stackoverflow.com/questions/13119124/...但我试图找出delete关键:D
2021-04-27 20:17:22
允许空间: function alphaOnly(event) { var key = event.keyCode; return ((key >= 65 && key <= 90) || key == 8 || key==32); }
2021-04-30 20:17:22
这不允许空间。如何为该代码留出空间?
2021-05-05 20:17:22

您可以使用正则表达式,而不是依赖可能非常麻烦的键代码。通过更改模式,我们可以轻松地限制输入以满足我们的需求。请注意,这适用于keypress事件,并允许使用退格键(如已接受的答案)。它不会阻止用户粘贴“非法”字符。

function testInput(event) {
   var value = String.fromCharCode(event.which);
   var pattern = new RegExp(/[a-zåäö ]/i);
   return pattern.test(value);
}

$('#my-field').bind('keypress', testInput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
   Test input:
   <input id="my-field" type="text">
</label>

为了修改允许的输入,只需根据您的喜好修改正则表达式。例如,表示正整数的正则表达式可以表示为 /[0-9]+/。但是当你说数字时,也许你有更具体的想法?
2021-05-09 20:17:22
嗨,兄弟,你能像这个盒子一样提供一个数字代码吗?
2021-05-10 20:17:22

在较新的浏览器上,您可以使用:

<input type="text" name="country_code" 
    pattern="[A-Za-z]" title="Three letter country code">

您可以使用正则表达式来限制输入字段。

^ 我的错误。我看到它与提交按钮结合时会响应,但不会根据w3schools.com/tags/att_input_pattern.asp实时阻止键输入
2021-05-15 20:17:22
请注意,如果您只输入一个字母,这将起作用。因此,如果您想要尽可能多的字母,请添加 +(参见下面的示例)pattern="[A-Za-z]+"
2021-05-18 20:17:22
你可以为此添加一个jsfiddle吗?我似乎无法让它工作
2021-05-21 20:17:22

仅漂亮的单行 HTML:

 <input type="text" id='nameInput' onkeypress='return ((event.charCode >= 65 && event.charCode <= 90) || (event.charCode >= 97 && event.charCode <= 122) || (event.charCode == 32))'>