web-dev-qa-db-ja.com

javascript減算(-)キーコード

わかりました。マイナス/減算/-が押されたかどうかを確認するコードが必要です。押された場合は、アラートボックスを表示します。 109189の両方のキーコードを試してみましたが、それでも目的の結果が得られません。 "-"を押しても、アラートボックスが表示されません

15
kmunky

キー押下イベント中にテストするJavaScriptcharCodesは、 [〜#〜] ascii [〜#〜] です。 。キーダウンまたはキーアップイベントで使用される場合、109は正しいkeyCodeです。

「-」のcharCodeは45です。

30
Dave Ward

keydownイベントハンドラーでこれを行わないでください。キーコードに関するさまざまなブラウザーのアイデアや、さまざまなキーボードタイプのキーコード間の潜在的なバリエーションに翻弄されます。 keypressイベントでそれを行うと、代わりに文字コードを取得できます。これは実際に必要なものです。

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var charCode = evt.which || evt.keyCode;
    var charStr = String.fromCharCode(charCode);
    if (charStr == "-") {
        alert("Minus!");
    }
};

JavaScriptキーイベントに関して必要になる可能性のあるすべての情報: http://unixpapa.com/js/key.html

9
Tim Down

1.event.keyCode = 109はテンキーでは「-」です

2.event.keyCode = 189は、Chromeのアルファベットキーボードキーの「-」です。

3.event.keyCode = 173 is'- 'in alphabate keybord key on firefox&on chrome 173 keycord is Mute On | Off

8
user5943894

KeyCodesは次の方法で見つけることができます。

6
Rubens Farias

いくつかのコードを投稿してください。これは私のために働きます:

document.onkeydown = function (e) {
    if (e.keyCode === 109 || e.keyCode === 189) {
        alert('minus sign pressed');
    }
};

ここにキーコードの完全なリスト: http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx

5
Matt

これがうまくいくことを願っています。ユーザーがキーを押したことを検出し、探しているキーがアラートを表示する場合は、実際のキーを他のキーに変更できます。

function detectSubstract(e)
{
var evtobj=window.event? event : e //distinguish between IE's explicit event object (window.event) and Firefox's implicit.
var unicode=evtobj.charCode? evtobj.charCode : evtobj.keyCode
var actualkey=String.fromCharCode(unicode)

    if (actualkey=="-")
    {
        alert('You pressed the minus key')
    }
}
document.onkeypress=detectSubstract
3
johnnyArt

ブラウザ間での実装の一貫性がないため、人々はevent.keyCodeevent.charCodeから離れています。代わりに、event.codeを使用してください。これはstringフィールドです。

ほとんどのブラウザはArray.includesをサポートしているので、私は次のことを行う傾向があります。

if (['-', 'Minus', 'NumpadSubtract'].includes(e.code)) {
    // do something
}
2
Jeff Fairley