#javascript
Вопрос:
У меня есть этот код, который в основном отключает добавление в пустое пространство внутри поля ввода, однако, похоже, он не работает в Chrome Mobile/App/Android.
У кого-нибудь есть какие-нибудь решения?
<script>
document.getElementById('firstname').addEventListener('keydown', function(evt){
if (this.value.length === 0 amp;amp; evt.which === 32) evt.preventDefault();
});
</script>
Комментарии:
1. developer.mozilla.org/en-US/docs/Web/API/UIEvent/which (нестандартные, не используются в производстве и т. Д.)
Ответ №1:
Вы можете использовать KeyboardEvent.code
вместо этого
document.getElementById('firstname').addEventListener('keydown', function(evt){
if (this.value.length === 0 amp;amp; evt.code === 'Space')
evt.preventDefault();
});
<input id="firstname">
Комментарии:
1. Как и мой код, я не могу заставить его работать на Chrome Android. Он отлично работает на настольных компьютерах и в Safari, но не на мобильных устройствах.
2. вы пытались отладить скрипт с помощью предупреждения? срабатывает ли прослушиватель «клавиша вниз» при нажатии клавиши пробела? Я попробовал это в safari на iPhone, и это работает.
3. Он работает в Safari, на рабочем столе Chrome и в Firefox. Но на мобильном устройстве Chrome он, похоже, не работает. Я перепробовал все виды версий, и я думаю, что это может быть просто мобильная версия Chrome в настоящее время.
4. Chrome на iPhone также работает… срабатывает ли событие keydown в вашем Chrome?
Ответ №2:
Согласно https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent, KeyboardEvent.which
является устаревшим. Используйте KeyboardEvent.key
вместо этого.
Также смотрите список кодов ключей.
document.getElementById('firstname').addEventListener('keydown', function(evt){
if (this.value.length === 0 amp;amp; evt.key === " ") evt.preventDefault();
});
<input id="firstname">
Комментарии:
1. Это прекрасно работает. Но в Chrome Mobile/Android это не работает, пользователь по какой-то причине может добавлять пустые места в поле ввода. На рабочем столе это работает нормально, в Safari это работает нормально.