1

この関数をjqueryでキー押下イベントにアタッチしましたが、eventObjectでは、入力された大文字と小文字に対して同じcharコードを返します

function keyPressed(delegates,eventdata){
        var keyType = new KeyType();
        var keycode = eventdata.which;
        if((keycode === 0)&&(eventdata.keyCode === 46)){
            keycode=46;
        }
        switch(keycode)
        {
        case keyType.enter:
            break;
        case keyType.backspace:
            break;
        case keyType.del:
            break;
        case keyType.space:
            break;
        default:
            keycode = 1;
        }
        console.log(eventdata.charCode);
        console.log(eventdata.which);
        console.log(eventdata.keyCode);
        //if a delegate is present call it
        var delegate = delegates[keycode];
        if(delegate !== null){
            delegate(eventdata);
    }
}
4

2 に答える 2

1

文字コードは、押されたキーを示します。キーボードには、「a」と「A」の両方に対して1つのキーしかありません。シフトキーも調べる必要があります。

  if (eventData.shiftKey) {
    //Shift
  }
  if (eventData.ctrlKey) {
    //Ctrl
  }
  if (eventData.altKey) {
    //Alt
  }
于 2012-07-22T01:10:37.983 に答える
1

jQuery を使用してキーボード/マウス イベントを検出する場合はevent.which、正規化されたユーザー入力のクロスブラウザーを取得するために常に使用する必要があります。

少しトピックから外れた実例の歴史、数ヶ月前、FF と Chrome で完全に正常に動作する Vanilla JS でユーザースクリプトを作成しました。Operaですぐにデバッグしましたが、もちろん、キーの値になるはずのときにevent.keyCode返されました。0

そうです、jQuery をevent.which使用してユーザー入力を処理できるときはいつでも、それを使用して多くの頭痛の種を節約してください。

keydownkeypressは異なるイベントであり、異なるイベントに対して異なる値を報告する場合があります。これは、異なるブラウザーでkeyCodeおよび/またはプロパティを持つことでさらに異なる場合があります。それらの不一致を最小限に抑えます。charCodeevent.which

于 2012-07-22T04:50:42.673 に答える