Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как назначить одну и ту же клавиатурную комбинацию для двух элементов? (https://javascript.ru/forum/dom-window/59656-kak-naznachit-odnu-i-tu-zhe-klaviaturnuyu-kombinaciyu-dlya-dvukh-ehlementov.html)

Szorstki 21.11.2015 04:19

Как назначить одну и ту же клавиатурную комбинацию для двух элементов?
 
Есть вот такой код:
e2_ctrl_navi = function(event) {
	if (window.event) event = window.event
	var target = (event.srcElement || event.target).tagName;
	if (/textarea|input/i.test(target)) return

	if (
		(document.e2.mac && event.altKey) || (!document.e2.mac && event.ctrlKey)
	) {
		var link = null
		if (37 == event.keyCode) link = document.getElementById('link-prev')
		if (39 == event.keyCode) link = document.getElementById('link-next')
		if (38 == event.keyCode) link = document.getElementById('link-later')
		if (40 == event.keyCode) link = document.getElementById('link-earlier')
		if (link && link.href) {
			location.href = link.href
			if (window.event) window.event.returnValue = false
			if (event.preventDefault) event.preventDefault()
		}
	}
}

Для всех четырех id назначены разные сочетания клавиш.
А мне надо, что-то типа этого:
if (37 == event.keyCode) link = document.getElementById('link-prev')
if (39 == event.keyCode) link = document.getElementById('link-next')
if (39 == event.keyCode) link = document.getElementById('link-later')
if (37 == event.keyCode) link = document.getElementById('link-earlier')

Для #link-prev и #link-earlier должна быть одинаковая комбинация клавиш. Так же и для #link-next и #link-later.
Но в таком виде это не работает.

P. S. В одно и тоже время на странице встречается только одна из пар, так что конфликтов быть не должно.

Szorstki 21.11.2015 07:15

Вопрос решен:
e2_ctrl_navi = function(event) {
	if (window.event) event = window.event
	var target = (event.srcElement || event.target).tagName;
	if (/textarea|input/i.test(target)) return

	if (
		(document.e2.mac && event.altKey) || (!document.e2.mac && event.ctrlKey)
	) {
		var link = event.keyCode === 37 ? document.getElementById('link-prev') || document.getElementById('link-earlier') : event.keyCode == 39 ? document.getElementById('link-next') || document.getElementById('link-later') : null;
		if (link && link.href) {
			location.href = link.href
			if (window.event) window.event.returnValue = false
			if (event.preventDefault) event.preventDefault()
		}
	}
}


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