Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   PageDown + Enter, сочетание клавиш (https://javascript.ru/forum/events/42788-pagedown-enter-sochetanie-klavish.html)

timedo 09.11.2013 18:33

PageDown + Enter, сочетание клавиш
 
Здравствуйте. Хочу что б при нажатии pageDown(стрелочка вниз) + Enter выводило окошко hello, только у меня не работает.
var DOWN = 40;
    var ENTER = 13;
 
    document.onKeydown = function(e){
        e = e || event;
        if (e.keyCode == 27) {
            cancel();
            return false;
        }
 
        if(e.DOWN && e.ENTER){
            alert("hello");
        }

Rise 09.11.2013 20:06

function runOnKeys(func) {
	var codes = [].slice.call(arguments, 1);
	var pressed = {};
	document.onkeydown = function(e) {
		e = e || window.event;
		pressed[e.keyCode] = true;
		for(var i=0; i<codes.length; i++) {
			if (!pressed[codes[i]]) {
				return;
			}
		}
		pressed = {};
		func();
	};
	document.onkeyup = function(e) {
		e = e || window.event;
		delete pressed[e.keyCode];
	};
}
runOnKeys( function() { alert("Привет!") }, 40, 13 );

timedo 09.11.2013 20:32

Rise, спасибо огромное за помощь! Я только начал изучать js, буду очень благодарен если вы объясните несколько строк:

function runOnKeys(func) {
	var codes = [].slice.call(arguments, 1); // что делаем тут?
	var pressed = {}; //создаем массив
	document.onkeydown = function(e) {
		e = e || window.event; 
		pressed[e.keyCode] = true; //что тут?
		for(var i=0; i<codes.length; i++) { //перебираем массив 
			if (!pressed[codes[i]]) {
				return;
			}
		}
		pressed = {}; //?
		func();//рекурсия?
	};
	document.onkeyup = function(e) {
		e = e || window.event;
		delete pressed[e.keyCode];
	};
}
runOnKeys( function() { alert("Привет!") }, 40, 13 );


Часовой пояс GMT +3, время: 14:06.