0

我需要限制特殊字符(如“/”、“\”)以及“$”(shift+4)、“#”(shift+3)的输入,但还需要允许输入大写字符,如“A” (shift+a) 等。

下面的代码有效,但我不限制“$”和所有(从“shift+0”到“shift+9”),因为我允许“shift”,给我一些回应如何做到这一点,

HTML

<input type="text" id="txtboxToFilter" />

jQuery

<script type="text/javascript" language="javascript">
$(document).ready(function () {
    $("#txtboxToFilter").keydown(function (event) {
        // Allow: backspace, delete, tab, escape, and enter
        if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
        // Allow: Ctrl+A
        (event.keyCode == 65 && event.ctrlKey === true) ||
        // Allow: home, end, left, right
        (event.keyCode >= 35 && event.keyCode <= 39)) {
            // let it happen, don't do anything
            return;
        }
        else {
            // stop the keypress for special character "/", "\"
            if (event.keyCode >= 190) {
                event.preventDefault();
            }
        }
    });
});

4

1 回答 1

0

正如评论中提到的,如果要阻止使用特定字符,则应该在字符级别上攻击问题,而不是尝试限制特定键的使用。我会在这个小提琴中做类似的事情。我正在使用正则表达式来替换所有出现的不需要的字符。因为在输入时打断用户有点奇怪,所以我使用change()了当文本字段失去焦点时触发的。

$("#text").change(function() {
    $("#text").val($("#text").val().replace(/\\|\//g, ""));
});​
于 2012-08-07T16:38:11.420 回答