web-dev-qa-db-ja.com

javascriptaltキー

デスクトップウィンドウのようなWebユーザーインターフェイスを作成しています。今、私たちは処理する必要があります Alt キー。いつ Alt キーを押すと、フォーカスが上のメニューに移動します。

Javascriptで、イベントを取得する方法 Alt キーの場合のみ Alt キーが押されましたか?他のキーが同時に押されていないことを確認する必要があります。

前もって感謝します。

11
Riera

これが最もエレガントな解決策かどうかはわかりませんが、問題なく機能しました。

$(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;
        }
    });
});
3
Riera

多分このように

document.onkeydown = keydown;

function keydown(evt) {
    if (!evt) evt = event;
    if (evt.altKey) {
        alert('alt');
    }
} // function keydown(evt)​
14
Ricky

動作中デモ

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イベントを取得する場合。

5
Talha

e.preventDefault();を置くだけです

$(document).on('keydown', function (e) {
    if (e.key === 'Alt') {
        e.preventDefault();
    }
});
0
Jon Snow