клавиша 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;
        }
    });
});