Нашёл на одном сайте такую приколюху, что пользователь может изменять назначение каждой клавиши - как ему удобно и мне бы хотелось сделать подобное на своём сайте, но нигде информации об этом не нашёл. Вот и возникает вопрос - как сделать так, чтобы пользователь сам мог изменять назначение каждой клавиши и, если ему это будет не удобно, он мог сбросить значения по умолчанию? Буду рад вашей помощи :)
Хмм... ну мой вариант будет не идеальным, но минимальную демонстрацию обеспечит.
Тут наверно главная фишка в том, чтобы знать про keyup
, который умеет определять нажатую кнопку. Изначально персонаж настроен двигаться направо и налево при нажатии правой и левой стрелок. Изменение происходит сразу при введении любой другой кнопки в инпуты (не заморачивался с кнопкой 'ok'):
JsFiddle ДЕМО
(function(){
const bubu = document.getElementById('bubu');
let left = 0; //Изначально позиция 0
//Кнопки, нажатие которых будем сравнивать перед действием
let RMove = 'ArrowRight';
let LMove = 'ArrowLeft';
document.addEventListener('keyup', function(e){
//Создаем регулярные выражения, с которыми будем сравнивать нажатую кнопку,
//Которую можно получить через "e.key"
let RMoveKey = new RegExp( RMove, 'ig' );
let LMoveKey = new RegExp( LMove, 'ig' );
//При нажатии кнопки сравнили - если совпало с заранее сохраненной кнопкой -
//Обновляем значение позиции left и сдвигаем куда надо.
if( e.key.match( RMoveKey ) ) {
left += 50;
bubu.style.left = left + 'px';
}
if( e.key.match( LMoveKey ) ) {
left -= 50;
bubu.style.left = left + 'px';
}
});
document.getElementById('ChangeR').addEventListener('keyup', function(e){
//А при введении новой кнопки, просто обновляем изначальное значение
//Переменной, в которой должна храниться сравниваемая кнопка.
RMove = e.key;
document.querySelector('#ChangeR + span').innerHTML = 'Теперь персонаж будет передвигаться направо с помощью кнопки <span style="color: red;">' + e.key + '</span>';
});
document.getElementById('ChangeL').addEventListener('keyup', function(e){
LMove = e.key;
document.querySelector('#ChangeL + span').innerHTML = 'Теперь персонаж будет передвигаться налево с помощью кнопки <span style="color: red;">' + e.key + '</span>';
});
})();
/* Ненужная декорация */
#bubu {width: 50px; height: 50px; background: orange; border-radius: 50%; padding-top: 20px; text-align: center; box-sizing: border-box; position: absolute;}
<div id="bubu">o_o</div>
<br><br><br><br>
<input id="ChangeR" placeholder="Движение направо"><span></span><br><br>
<input id="ChangeL" placeholder="Движение налево"><span></span>
keypress тоже умеет подобное, но не все кнопки умеет определять.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Составил на сервере (laravel) json запрос, который получает комментарии статьи
Событие keyup - пока печатается всё с клавиатуры - всё хорошоПользователь вводит текст, обработчик проверяет на правильность и если что-то неправиьлно...
у меня есть небольшая форма которая представляет из себя чек, в которой в селекте выбирается товар и рядом в инпуте количество этого товараВ...
Вырезал пример из моего проекта и сильно упростил: Данный код создаст один нужный мне фрагментДело в том, что я хочу создавать неограниченное...