Ответ 1
Попробуйте использовать if (e.ctrlKey)
.
Здесь я вижу некоторые подобные вопросы (например, JavaScript: проверьте, нажата ли кнопка CTRL), но моя проблема - это фактически запуск события. Мой код js:
// Listen to keyboard.
window.onkeypress = listenToTheKey;
window.onkeyup = listenToKeyUp;
/*
Gets the key pressed and send a request to the associated function
@input key
*/
function listenToTheKey(e)
{
if (editFlag == 0)
{
// If delete key is pressed calls delete
if (e.keyCode == 46)
deleteNode();
// If insert key is pressed calls add blank
if (e.keyCode == 45)
createBlank();
if (e.keyCode == 17)
ctrlFlag = 1;
}
}
Событие запускается для любых других клавиш, кроме ctrl.
Мне нужно также запустить его для ctrl.
Я не могу использовать jQuery/prototype/независимо от того, что эти решения неприемлемы.
Итак... как я могу обнаружить ctrl?
Попробуйте использовать if (e.ctrlKey)
.
Ваше событие имеет свойство ctrlKey. Вы можете проверить это, чтобы посмотреть, нажата ли клавиша или нет. См. Ниже фрагмент ниже для большего контроля, например, клавиш.
function detectspecialkeys(e){
var evtobj=window.event? event : e
if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey)
alert("you pressed one of the 'Alt', 'Ctrl', or 'Shift' keys")
}
document.onkeypress=detectspecialkeys
Использование onkeydown, а не onkeypress, может помочь.
От http://www.w3schools.com/jsref/event_onkeypress.asp
Примечание. Событие onkeypress не запускается для всех ключей (например, ALT, CTRL, SHIFT, ESC) во всех браузерах. Чтобы определить, имеет ли пользователь нажмите клавишу, вместо этого используйте событие onkeydown, потому что оно работает для все клавиши.