-1

http://jsfiddle.net/WhP8q/

入力を英数字、0-9、AZ、az に制限しようとしています。

私が参照しているASCIIテーブル:http://www.asciitable.com/ ここに私がこれまでに持っているものがあります

$(function() {
    $("input").bind("keydown paste", function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        var c = code;
        var letterAllowed = ((c > 47 && c < 58) || (c > 64 && c < 90) || (c > 96 && c < 123))
        if (code > 32 && !letterAllowed) {
            return false;
        }
    });
});​

現在、チルダ (~) 文字はフィールドに入力できませんが、!@#$% などの他の特殊文字/シフト文字はすべてテキスト フィールドに入力されます。私のロジックは正しいと確信していますが、私の問題はJavaScriptバインディングの誤解ですか? わかりました

4

3 に答える 3

2

一部のケースでのみ文字入力を防止することは、javascript では非常に複雑です。keypressイベント(防止したいもの) の場合value、入力のその後がわからずkeycode、押されたキーのみ (結果の確かにチャー)。また、 や などの特殊キーにも注意する必要があります。

次のようなものをお勧めします。

$("input").on("keypress keyup paste", function(e) {
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
});
于 2012-11-26T14:20:03.987 に答える
1

入力文字に制限がある場合、英数字以外の文字に置き換えることができます。

<input type='text' id="txtAlphaNumeric"/>
<input type='text' id="txtNumeric"/>
<input type='text' id="txtAlphabet"/>
<script type="text/javascript">
$(function() {
    $('#txtNumeric').keyup(function() {
        if (this.value.match(/[^0-9]/g)) {
            this.value = this.value.replace(/[^0-9]/g, '');
        }
    });
    $('#txtAlphabet').keyup(function() {
        if (this.value.match(/[^a-zA-Z]/g)) {
            this.value = this.value.replace(/[^a-zA-Z]/g, '');
        }
    });
    $('#txtAlphaNumeric').keyup(function() {
        if (this.value.match(/[^a-zA-Z0-9]/g)) {
            this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
        }
    });
});
</script>

回答元:jqueryは英数字のみを許可

于 2012-11-26T14:20:29.027 に答える
0

結局、私は次のことをする必要があります:

$("input").keypress(function(e){
        var code = e.charCode;

charCodeは、最後に押されたキーのASCIIコードではなく、入力された文字の実際の文字コードを示します。

http://api.jquery.com/keypress/を参照してください

于 2012-11-26T14:17:36.227 に答える