5

アンパサンドとアンダースコアのキーコードを見つけようとしています。ユーザーにアンパサンドとアンダースコアの入力を許可するべきではありません。あるリストを見てみると、7 とアンパサンドの両方のキーコードとして 55 が言及されており、別のリストでは 55 が 7 のキーコードであると述べられています。したがって、ユーザーがキーコード 55 を押したときに false を返すと、許可されません。ユーザーは 7 を使用できませんが、これは要件ではありません。アンパサンドとアンダースコアのキーコードを見つけるにはどうすればよいですか?

55 で試してみましたが、アンパサンドではなく 7 のアラートしか出ません!

function noenter(e)
{
    evt = e || window.event;
    var keyPressed = evt.which || evt.keyCode;

    if(keyPressed==13)
    {
        return false;
    }
    else if(evt.shiftKey && keyPressed===55)
//  else if(keyPressed==59 || keyPressed==38 || keyPressed==58 || keyPressed==95)
    {
        alert("no special characters");
        return false;
    }
}
4

4 に答える 4

9

keypress次のように、イベントを使用してキャラクターを直接テストします。キーコードをいじらないでください。キーコードは、キーボードの種類や文化によって異なります。文字コードはありません。

var el = document.getElementById("your_input");

el.onkeypress = function(evt) {
    evt = evt || window.event;
    var charCode = evt.which || evt.keyCode;
    var charStr = String.fromCharCode(charCode);
    if (charStr == "&" || charStr == "_") {
        alert(charStr);
        return false;
    }
};
于 2010-07-20T15:45:48.570 に答える
2

Shift キーが押されているかどうかを確認します。

//e = Event
(e.shiftKey && e.keyCode === 55) //returns true if Shift-7 is pressed
于 2010-07-20T15:06:40.300 に答える
0

はい、わかった!38です!この質問を立ててすみません!

于 2010-07-20T15:06:38.070 に答える
0

Unicode Key Identifier を使用して解決しました。以下は、jQuery を使用した私の実装です。

function parseKey(key) {
    return parseInt(key.substring(2), 10);
}

$inputs.bind('keydown', function(e) {
    var c=parseKey(e.originalEvent.keyIdentifier);
    //allow only numbers and backspace
    if ((c<30 || c>39) && e.which!=8)
        e.preventDefault();
    if (e.which == 13)
        $(this).blur();
});
于 2011-11-22T19:09:04.457 に答える