简体   繁体   English

如何在 javascript 的输入字段中只允许字符输入 (az,AZ)?

[英]How do I allow only character input (a-z,A-Z) in my input field in javascript?

I want to be able to type only alphabets in my input field, not numbers.我希望能够在我的输入字段中只输入字母,而不是数字。 I've tried this code but it doesn't work:我试过这段代码,但它不起作用:

document.getElementById("input").addEventListener("keypress",function(event){
        return (event.code=="KeyA"||event.code=="KeyB"||event.code=="KeyC"||event.code=="KeyD"||
        event.code=="KeyE"||event.code=="KeyF"||event.code=="KeyG"||event.code=="KeyH"||event.code=="KeyI"||
        event.code=="KeyJ"||event.code=="KeyK"||event.code=="KeyL"||event.code=="KeyM"||event.code=="KeyN"||
        event.code=="KeyO"||event.code=="KeyP"||event.code=="KeyQ"||event.code=="KeyR"||event.code=="KeyS"||
        event.code=="KeyT"||event.code=="KeyU"||event.code=="KeyV"||event.code=="KeyW"||event.code=="KeyX"||
        event.code=="KeyY"||event.code=="KeyZ");         
      })

Please help me.请帮我。

Simplest way to do that is to use HTML pattern Attribute最简单的方法是使用HTML 模式属性

For example:例如:

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

Or with key events与关键事件

Using event.preventDefault() method can prevent running default task of events.使用event.preventDefault()方法可以防止运行事件的默认任务。 Just check if event.key is not in your allowed list, run event.preventDefault() .只需检查event.key是否不在您的允许列表中,运行event.preventDefault() In following code I used event.key.toLowerCase() that cause accepting both d and D .在下面的代码中,我使用了event.key.toLowerCase()导致接受dD

 document.getElementById("input").addEventListener("keypress",function(event){ if("abcdefghijklmnopqrstuvwxyz".indexOf(event.key.toLowerCase()) < 0) event.preventDefault(); })
 <input id="input" type="text">

You can try this way你可以试试这个方法

<input type="text" name="name" id="event" onkeypress="return alphabhets(event);" />
function alphabhets(event) {
  const key = event.keyCode;
  return /[a-z]/i.test(event.key);
};

Like @Ali Demirci said, you can use the pattern attribute.就像@Ali Demirci所说,您可以使用pattern属性。 Alternatively you can give a message while the user is typing.或者,您可以在用户键入时发送消息。

For the record: client side form checking is never sufficient if the values should also be processed server side.记录一下:如果值也应该在服务器端处理,那么客户端的表单检查是不够的。 In that case, the server side processing should always include a (re)check of the values.在这种情况下,服务器端处理应始终包括对值的(重新)检查。

 document.addEventListener(`keyup`, handle); function handle(evt) { if (evt.target.id="demo") { const isOk = /^[az]{0,}$/gi.test(evt.target.value); evt.target.parentNode.querySelector(`span`).textContent =?isOk: `Only letters (az or AZ) are allowed`; ``; } }
 .warn { color: red; }
 <div><input type="text" id="demo"> <span class="warn"></span></div>

Use a html5 pattern and force a native validity check on input event handler.使用 html5 模式并强制对输入事件处理程序进行本机有效性检查。 Use the title to get a custom message使用标题获取自定义消息

 <input type="text" pattern="[a-zA-Z0-9]+" oninput="this.reportValidity()" title="Username should only contain alphanumerical characters.">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM