event.charCode не работает в Firefox

Я пытаюсь ограничить свое текстовое поле только числами. Я использую:

onkeypress="return (event.charCode >= 48 && event.charCode <= 57)"

Проблемы возникают, когда я хочу удалить (используя клавишу Backspace или удалить) или переместить курсор в другую позицию с помощью клавиш со стрелками, потому что я не могу использовать эти клавиши.

Итак, теперь у меня есть этот код:

onkeypress="return ((event.charCode >= 48 && event.charCode <= 57) || event.charCode == 8)"

Это пример, charCode == 8 для разрешения возврата. В файрфоксе не работает. Я все еще ограничиваю текстовое поле числами, но я все еще не могу использовать клавишу возврата.

Можешь дать мне руку? Вы знаете, что я делаю неправильно?

Код ключа: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode


person eugneio dsjgfo    schedule 21.06.2018    source источник
comment
Вы можете подумать о том, чтобы правильно прикрепить обработчики событий, используя правильный Javascript, а не встроенные обработчики (которые так же плохи, как eval, и с ними трудно работать)   -  person CertainPerformance    schedule 21.06.2018
comment
stackoverflow .com/questions/6116933/   -  person SirPilan    schedule 21.06.2018
comment
И рассмотрите возможность добавления ключей с 96 по 105.   -  person Michel    schedule 21.06.2018


Ответы (1)


Используйте 1_

<input onkeypress="return ((event.which >= 48 && event.which <= 57) || event.which == 8)">


В качестве альтернативы вы можете использовать event.key и использовать фактические имена ключей для проверки правильности.

function handleNumericEditable(event){
  var allowed = /^[0-9]|Arrow(Left|Right)|Backspace|Home|End|Delete$/
  return allowed.test(event.key);
}
<input onkeypress="return handleNumericEditable(event)">

person Gabriele Petrioli    schedule 21.06.2018