Как разрешить номера, backspace, delete, left и right клавиши со стрелками в тексте html?

Я использую следующий код javascript, который, как я думаю, должен разрешать только номера, обратное, удаление, стрелку влево и стрелки в текстовом поле, но также позволяет создавать алфавиты. Я не знаю почему?

function validateQty(event) {
    var key = window.event ? event.keyCode : event.which;

if (event.keyCode == 8 || event.keyCode == 46
 || event.keyCode == 37 || event.keyCode == 39) {
    return true;
}
else if ( key < 48 || key > 57 ) {
    return false;
}
else return true;
};

Вызов этой функции как

<input type="text" onkeypress='validateQty(event)'>

Ответы

Ответ 1

Без сомнения, ваш код верен, но вы пропустили ключевое слово "return" в текстовом поле.

<input type="text" onkeypress='return validateQty(event);'>

Вы можете увидеть код здесь

Ответ 2

      function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
         return true;
      }
<HTML>
   <HEAD>
   </HEAD>
   <BODY>
      <input id="txtChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar" maxlength="10">
   </BODY>
</HTML>

Ответ 3

<input type="text"  class="form-control" id="dompetku_msisdn" name="dompetku_msisdn" placeholder="Phone Number"  aria-describedby="helpBlock" onkeydown='return (event.which >= 48 && event.which <= 57) || event.which == 8 || event.which == 46 || event.which == 37 || event.which == 39' required /> </input>

Ответ 4

const validateQty = (event) => {
    var key = window.event ? event.keyCode : event.which;
    console.log(event);
    if (event.keyCode === 8 || event.keyCode === 46
        || event.keyCode === 37 || event.keyCode === 39) {
        return true;
    } else if (key < 48 || key > 57) {
        return false;
    } else { return true; }
};


<input type="text" onkeydown='return validateQty(event);'>