Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.11.2015, 04:19
Аспирант
Отправить личное сообщение для Szorstki Посмотреть профиль Найти все сообщения от Szorstki
 
Регистрация: 15.02.2012
Сообщений: 51

Как назначить одну и ту же клавиатурную комбинацию для двух элементов?
Есть вот такой код:
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. В одно и тоже время на странице встречается только одна из пар, так что конфликтов быть не должно.
Ответить с цитированием
  #2 (permalink)  
Старый 21.11.2015, 07:15
Аспирант
Отправить личное сообщение для Szorstki Посмотреть профиль Найти все сообщения от Szorstki
 
Регистрация: 15.02.2012
Сообщений: 51

Вопрос решен:
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()
		}
	}
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как завернуть несколько функций в одну syegorius Общие вопросы Javascript 3 21.09.2012 01:25
Как выводить часть элементов страницы через javascript Victim Events/DOM/Window 9 28.12.2011 22:51
Как можно совместить 2 "одинаковые javascript но разные внутри" в одну страницу?..ато rashid86 Элементы интерфейса 2 25.04.2011 22:49
Как на два события назначить одну функцию shaltay jQuery 2 28.02.2011 15:50
Несколько созданных элементов располагаются в одной строке. Как этого избежать? Hold Events/DOM/Window 1 21.01.2011 23:52