HTML 入力値の場合、ラテン文字 (大文字と小文字を問わず) と、バックスペース、削除、矢印キー、.dot、@at などの他のすべてのキーのみを受け入れる正規表現を JavaScript で定義することは可能ですか? 後でではなく、イベントキーの評価のためですか?そのため、矢印とその他のキーが必要です。
2 に答える
詳細を説明しない限り、正規表現は役に立ちません。
使用する必要のある主要なイベントの詳細はわかりませんが、辞書のようなオブジェクトを自分で作成し、プロジェクトの1つでうまく機能しましたが、もちろん失敗の証拠ではなく、100%になるのは非常に困難です。多くのキーボードレイアウトと言語があり、JavaScriptとブラウザの実装での標準化されていないイベント処理が原因です。私は最初にこの記事を読むことをお勧めしますそれは私に大いに役立ちましたhttp://unixpapa.com/js/key.html
米国英語キーボードの回避策。
var Keys = { "BACKSPACE":8, "TAB":9,"ENTER":13,"SHIFT":16,"CTRL":17,"ALT":18, "PAUSEBREAK":19, "CAPSLOCK":20,"ESC":27, "SPACE":32, "PAGEUP":33, "PAGEDOWN":34, "END":35, "HOME":36, "LEFT":37, "UP":38, "RIGHT":39, "DOWN":40, "PRNTSCRN":44, "INSERT":45, "DELETE":46, "0":48, "1":49, "2":50, "3":51, "4":52, "5":53, "6":54, "7":55, "8":56, "9":57, "A":65, "B":66, "C":67, "D":68, "E":69, "F":70, "G":71, "H":72, "I":73, "J":74, "K":75, "L":76, "M":77, "N":78, "O":79, "P":80, "Q":81, "R":82, "S":83, "T":84, "U":85, "V":86, "W":87, "X":88, "Y":89, "Z":90, "WINKEY":91, "WINKEYR":92, "APPLICATION":93, "NUM0":96, "NUM1":97, "NUM2":98, "NUM3":99, "NUM4":100, "NUM5":101, "NUM6":102, "NUM7":103, "NUM8":104, "NUM9":105, "MULTIPLY":106, "ADD":107, "SUBTRACT":109, "DECIMALPOINT":110, "DIVIDE":111, "F1":112, "F2":113, "F3":114, "f4":115, "F5":116, "F6":117, "F7":118, "F8":119, "F9":120, "F10":121, "F11":122, "F12":123, "NUMLOCK":144, "SCROLLLOCK":145, "SEMICOLON":186, "EQUAL":187, "COMMA":188, "DASH":189, "PERIOD":190, "SLASH":191, "GRAVE":192, "OPENBRAKET":219, "BACKSLASH":220, "CLOSEBRAKET":221, "SINGLEQUOTE":222, "MMNEXT":176, "MMPREVIOUS":177, "MMSTOP":178, "MMPLAY":179, "MMREWIND":227, "MMFORWARD":228, "MYCOMPUTER":182, "MYCALCULATOR":183, "HELP":225, "Invalid!":0
}
あなたはのように使うことができます
if(event.keyCode == Keys['RIGHT']) //go right
if(event.keyCode == Keys['LEFT']) //go left
if(event.keyCode == Keys['ENTER']) //do something
if(event.keyCode == Keys['ESC'] || event.keyCode == Keys['BACKSPACE']) //exit
矢印やその他のキーについて言及しましたが、ゲームのようなものをバインドするためにキーを使用している場合は、CTRL ALT WINKEY ALTGR APPLICATION OPTION COMMANDのような修飾子を使用しないでください。これらは混乱しており、アプリケーションキーのふりをしているコマンドキーのように、非常に多くの矛盾があります。 、別のコントロールとしての右のaltなど、一部のキーボードには2番目のaltまたはctrlがありません。だから、それは例外の地獄です。
次のようなものを使用できます。
JavaScript
document.getElementById('foo').onkeydown = function (e) {
if (e.keyCode < 65 || e.keyCode > 90) {
e.preventDefault();
return false;
}
};
HTML
<textarea id="foo"></textarea>
これにより、小文字のみの入力に制限されます。アッパーでも機能するように少し変更する必要があります。