Подтвердить что ты не робот

В обработчике onclick, как я могу определить, был ли нажат сдвиг?

Как я могу написать обработчик onclick, который делает одну вещь для обычных кликов и другую вещь для смены кликов?

4b9b3361

Ответ 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, любые различия в реализации не должны быть проблемой.