клавиша javascript alt
мы создаем веб-интерфейс, который выглядит как окно на рабочем столе. Теперь нам нужно справиться с Alt ключ. Когда Alt клавиша нажата фокус переходит в верхнее меню.
в Javascript, как получить событие для Alt ключ, когда только Alt клавиша нажата? Мне нужно убедиться, что никакой другой ключ не был нажат одновременно.
спасибо заранее.
3 ответов
может быть, вот так
document.onkeydown = keydown;
function keydown(evt) {
if (!evt) evt = event;
if (evt.altKey) {
alert('alt');
}
} // function keydown(evt)
работающего демо
document.onkeyup = KeyCheck;
function KeyCheck(e)
{
var KeyID = (window.event) ? event.keyCode : e.keyCode;
switch(KeyID)
{
case 18:
document.Form1.KeyName.value = "Alt";
// do your work on alt key press....
break;
case 17:
document.Form1.KeyName.value = "Ctrl";
break;
}
}
и ваш html может быть таким
<form name="Form1">
<input type="text" name="KeyName" value="" />
</form>
Примечание: если вы хотите получить событие alt на другом элементе управления / типе, чем изменить его с вашими требованиями.
Я не знаю, является ли это самым элегантным решением, но он работал нормально.
$(function()
{
//Flag to check if another key was pressed with alt
var vAnotherKeyWasPressed = false;
//ALT keycode const
var ALT_CODE = 18;
//When some key is pressed
$(window).keydown(function(event)
{
//Identifies the key
var vKey = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
//The last key pressed is alt or not?
vAnotherKeyWasPressed = vKey != ALT_CODE;
});
//When some key is left
$(window).keyup(function(event)
{
//Identifies the key
var vKey = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
//If the key left is ALT and no other key is pressed at the same time...
if (!vAnotherKeyWasPressed && vKey == ALT_CODE)
{
//Focus the menu
$('#myMenu').focus();
//Stop the events for the key to avoid windows set the focus to the browser toolbar
return false;
}
});
});