Как я могу написать обработчик onclick, который делает одну вещь для обычных кликов и другую вещь для смены кликов?
В обработчике onclick, как я могу определить, был ли нажат сдвиг?
Ответ 1
Вы можете посмотреть свойство shiftKey события click.
window.addEventListener("click",
function(e) {
if (e.shiftKey) console.log("Shift, yay!");
},
false);
<p>Click in here somewhere, then shift-click.</p>
Ответ 2
Вам нужно убедиться, что вы передаете event
в качестве параметра вашей функции onclick
. Вы можете передать и другие параметры.
<html>
<head>
<script type="text/javascript">
function doSomething(event, chkbox)
{
if (event.shiftKey)
alert('Shift key was pressed while picking ' + chkbox.value);
else
alert('You picked ' + chkbox.value);
}
</script>
</head>
<body>
<h3>Pick a Color</h3>
<input type="radio" name="myColors" onclick="doSomething(event, this)" value="Red" /> Red<br/>
<input type="radio" name="myColors" onclick="doSomething(event, this)" value="Green" /> Green<br/>
<input type="radio" name="myColors" onclick="doSomething(event, this)" value="Blue" /> Blue<br/>
</body>
</html>
Ответ 3
Событие, запущенное из DOM, должно содержать свойство shiftKey
(или эквивалентное), указывающее состояние клавиши shift при запуске события; см., например, https://developer.mozilla.org/en/DOM/event.shiftKey для примера.
Если вы используете библиотеку обтекания JavaScript/DOM, такую как YUI, Prototype или jQuery, любые различия в реализации не должны быть проблемой.