デスクトップウィンドウのように見えるWebユーザーインターフェイスを作成しています。 Altキーを処理する必要があります。 Altキーを押すと、フォーカスが上位メニューに移動します。 ONLY Altキーキーが押されたときAltキーキーのイベントを取得するにはどのようにJavaScriptでjavascript altキー
、?私は同時に他のキーが押されていないことを確認する必要があります。
ありがとうございます。
デスクトップウィンドウのように見えるWebユーザーインターフェイスを作成しています。 Altキーを処理する必要があります。 Altキーを押すと、フォーカスが上位メニューに移動します。 ONLY Altキーキーが押されたときAltキーキーのイベントを取得するにはどのようにJavaScriptでjavascript 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;
}
});
});
このソリューションは、これまでより多くのブラウザと互換性があるため、これまでのところより優れたソリューションと思われます。すべてのブラウザがevent.keyCodeを理解しているわけではありません。いくつかはイベントを使用します。このソリューションはすべてをカバーします。 – James
多分このような
document.onkeydown = keydown;
function keydown(evt) {
if (!evt) evt = event;
if (evt.altKey) {
alert('alt');
}
} // function keydown(evt)
次のようなものもあります:evt.ctrlKey(Ctrlキーの場合) – Ricky
の作業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キーを取得したい場合はイベントオンあなたの要件に合わせて変更するよりも、他のコントロール/タイプが必要です。
ありがとうございますが、Alt + Lのように別のキーが同時に押された場合でもイベントは発生します。さらに、altキーを押すと、Windowsはブラウザツールバーにフォーカスを置くので、関数はfalseを返す必要があります。 – Riera
私のソリューションは役に立ちましたか? – Talha