Я использую keypress
event
, и я хочу получить value
в поле input
после нажатия клавиши. Я также хотел бы зафиксировать, какой ключ был нажат. В this example Я только разрешаю пользователю вводить цифры в поле input
(я знаю, что для входов) есть number
type
. Я использую setTimeout
, чтобы получить value
из окна input
. Есть ли лучший способ сделать это? Неужели это никогда не закончится?Получить значение ввода нажатием клавиши нажатия и захвата
var elTest = document.getElementById('test');
var elResult = document.getElementById('result');
function isNumber(evt, el) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
evt.preventDefault();
return false;
}
setTimeout(function() {
elResult.textContent = el.value;
}, 0);
return true;
}
elTest.addEventListener('keypress', function(e) {
return isNumber(e, this);
});
<input id='test' />
<div id='result'>
</div>
Это не распространяется на случай, когда номер удаляется из значения, а нажатие клавиши не срабатывает при нажатии кнопки backspace/delete, чтобы эти клавиши не были предотвращены. – dhudson
@dhudson, я не пытался решить все случаи, а пытался заставить Энтони на правильном пути. Согласился с тем, что для ввода входных данных используется вход для ввода входных данных при удалении или обратном пространстве, и приведенный выше код для этого не решает. – JeremyS