Итак, я использую с довольным, "true" . OnkeyDown генерирует новые элементы с нажатой клавиш как текст. Я использую PreflectDefault () , чтобы не показывать нажатый символ в поле ввода. Если нажат «Backspace», последний новый элемент удален. , если я ввожу несколько букв, а затем нажимаю на Backspace, ни одно из событий не запускается в JS.
Виртуальная клавиатура (по умолчанию и Swiftke Все прошли, события снова передаются в JS. Проблема существует только на мобильной связи !! >
let editableSpan = document.querySelector('#inp');
editableSpan.onkeydown = function(e){
console.log('key pressed', e.which, e.key);
if(e.which === 8){
var keyEls = document.querySelectorAll('#out .kbd');
keyEls.length > 0 && keyEls[keyEls.length - 1].remove();
}else if(e.key.length === 1){
var keyEl = document.createElement('span');
keyEl.classList.add('kbd');
keyEl.textContent = e.key;
document.querySelector('#out').append(keyEl);
}
e.preventDefault();
//editableSpan.removeAttribute('contenteditable');
//editableSpan.setAttribute('contenteditable', 'true');
}
var arr = ['input', 'keyup', 'keydown', 'keypress', 'beforeinput', 'textInput'];
arr.forEach(eventType => {
editableSpan.addEventListener(eventType, (e) => {
console.log(eventType, e.type, e.key || 'no key');
});
});< /code>
#inp {
background-color: goldenrod;
border: solid 3px black;
}
.kbd {
display:inline-block;
background-color:darkgrey;
font-size: 2em;
padding: .5em;
margin-right: .3em;
margin-top: .3em;
border-radius:.3em;
font-style:monospace;
}< /code>
< /code>
< /div>
< /div>
< /p>
Подробнее здесь: https://stackoverflow.com/questions/794 ... ards-in-js
Выявление выявления Backspace с мобильных клавиатур в JS ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение