简体   繁体   English

将 JQuery 转换为 addEventListener 用于按键事件

[英]convert JQuery into addEventListener for keypress event

I needed to craete an input which only accepts number.我需要创建一个只接受数字的输入。 For that, I have created an input with type text and only accepts 5 digits of length.为此,我创建了一个文本类型的输入,并且只接受 5 位数的长度。

<input id="inputNumber" type="text" maxlength="5">

For accepting only number, I created jquery code like the following.为了只接受数字,我创建了 jquery 代码,如下所示。

$("#inputNumber").keypress(function (value) {
// If the letter is not digit then display error and don't type anything
if (value.which != 8 && value.which != 0 && (value.which < 48 || value.which > 57)) {
return false;
}
else {
return true;
}
});

I tried to convert it into AddEventListner for my Type script file but failed.我试图将它转换为我的 Type 脚本文件的 AddEventListner 但失败了。 I even tried below method but failed again.我什至尝试了下面的方法,但又失败了。 How can I resolve this.我该如何解决这个问题。

Referece: keypress event doesn't log input value first time event is fired参考: 按键事件在第一次触发事件时不记录输入值

Please try below keydown event and prevent the characters based on the keycode ?请尝试以下keydown事件并根据keycode阻止字符?

 window.addEventListener('DOMContentLoaded', (event) => { var inputNumber = document.getElementById('inputNumber'); inputNumber.addEventListener('keydown', function(event) { if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || event.keyCode == 190 || event.keyCode == 110 || (event.keyCode == 65 && event.ctrlKey === true) || (event.keyCode >= 35 && event.keyCode <= 39) || event.keyCode == 189) { return } else { if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { event.preventDefault() } } }) });
 <input id="inputNumber" type="text" maxlength="5"/>

If you are looking for js equivalent code that might look like:如果您正在寻找可能看起来像这样的 js 等效代码:

 const inputNumber = document.querySelector("#inputNumber"); inputNumber.addEventListener("keypress", (event) => { if (isNaN(event.key)) { event.preventDefault(); return false; } else { return true; } });
 <input id="inputNumber" type="text" maxlength="5">

I needed to craete an input which only accepts number.我需要创建一个只接受数字的输入。

You can use input type="number" instead or simplify validation to .isNaN(event.key)您可以改用input type="number"或将验证简化为.isNaN(event.key)

const inputNumber = document.querySelector("#inputNumber") as HTMLInputElement;

inputNumber.addEventListener("keydown", (event: KeyboardEvent) => {

  if (isNaN(Number(event.key))) {
    event.preventDefault();
    return false;
  } else {
    return true;
  }
});

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

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