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

19

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

    
задан mike 06.04.2009 в 23:21
источник

3 ответа

41

Вы можете посмотреть свойство shiftKey события click.

window.addEventListener("click",
  function(e) {
    if (e.shiftKey) console.log("Shift, yay!");
  },
  false);
<p>Click in here somewhere, then shift-click.</p>
    
ответ дан AKX 06.04.2009 в 23:26
3

Вам нужно убедиться, что вы передали 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>
    
ответ дан Ryan 06.08.2013 в 16:26
3

Событие, выпущенное из DOM, должно содержать свойство shiftKey (или эквивалентное), указывающее состояние клавиши shift при запуске события; см., например, Ссылка для примера.

Если вы используете библиотеку обтекания JavaScript / DOM, такую ​​как YUI, Prototype или jQuery, любые различия в реализации не должны быть проблемой.

    
ответ дан Rob 06.04.2009 в 23:29