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

Leo*_*ban 15 javascript jquery input input-field

在这里使用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 = '';}"/>
Run Code Online (Sandbox Code Playgroud)

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));

}
Run Code Online (Sandbox Code Playgroud)

我在这里看到了很多关于如何限制数字的例子,我正在使用正确的密钥代码来表示az和AZ.你看到我做错了吗?

hex*_*ide 15

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

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

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

  • 这不允许空间。如何为该代码留出空间? (2认同)

Rob*_*kka 8

您可以使用正则表达式,而不是依赖可能非常麻烦的键代码.通过更改模式,我们可以轻松限制输入以满足我们的需求.请注意,这适用于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);
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


Dus*_*ler 6

仅漂亮的单行 HTML:

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


jsb*_*sht 5

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

<input type="text" name="country_code" 
    pattern="[A-Za-z]" title="Three letter country code">
Run Code Online (Sandbox Code Playgroud)

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


Kam*_*ski 5

简短的ONELINER

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

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

  • 此处允许粘贴数值 (3认同)