Приведенный ниже код подключает обработчики событий для кликов, но не работает для событий клавиатуры. Мне нужны не только document.keypress
, но и определенные элементы класса для событий клавиатуры. Итак, у меня есть «тест», который отлично работает для щелчков мыши, но не для каких-либо событий клавиатуры.
function test(className, fnCall, eventToApply){
if(typeof document.getElementById('x').getElementsByClassName(className) !='undefined') {
var els = document.getElementById('x').getElementsByClassName(className);
for(var i = 0; i < els.length; i++) {
if(els[i].addEventListener) { //Undefined for keypress events
els[i].addEventListener(eventName, function(e) { fnCall(e); }); }
else { //Hardcode for testing
els[i].onclick = function(e) { fnCall(e); };
els[i].onkeypress = function(e) { fnCall(e); } //doesn't work!
}
}
Однако документ onkeypress работает, но я не могу настроить обработчики отдельных элементов для готового документа или самого нажатия клавиши.
document.addEventListener('keypress', function(event){
//This works, but setting up events for each class type element doesn't work for keypress
})
Другими словами, есть ли эквивалент для выполнения нижеприведенного без использования JQuery:
document.addEventListener('keypress', function(event){
//This works in Jquery
$('.customClass-'+ event.keycode).click();
});
document.addEventListener('keypress', function(event){
//This doesn't register, says undefined for any event or attachEvenHandler/attachEvent
test('.class'+event.keycode, myFunction() , 'keypress');
});