2012-07-10 8 views
6

デスクトップウィンドウのように見えるWebユーザーインターフェイスを作成しています。 Altキーを処理する必要があります。 Altキーを押すと、フォーカスが上位メニューに移動します。 ONLY Altキーキーが押されたときAltキーキーのイベントを取得するにはどのようにJavaScriptでjavascript altキー

、?私は同時に他のキーが押されていないことを確認する必要があります。

ありがとうございます。

+0

私のソリューションは役に立ちましたか? – Talha

答えて

2

これが最も洗練されたソリューションであるかどうかわかりませんが、うまくいきました。

$(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; 
     } 
    }); 
}); 
+0

このソリューションは、これまでより多くのブラウザと互換性があるため、これまでのところより優れたソリューションと思われます。すべてのブラウザがevent.keyCodeを理解しているわけではありません。いくつかはイベントを使用します。このソリューションはすべてをカバーします。 – James

8

多分このような

document.onkeydown = keydown; 

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

次のようなものもあります:evt.ctrlKey(Ctrlキーの場合) – Ricky

5

の作業Demo

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キーを取得したい場合はイベントオンあなたの要件に合わせて変更するよりも、他のコントロール/タイプが必要です。

+1

ありがとうございますが、Alt + Lのように別のキーが同時に押された場合でもイベントは発生します。さらに、altキーを押すと、Windowsはブラウザツールバーにフォーカスを置くので、関数はfalseを返す必要があります。 – Riera

関連する問題