3

我有一个注册页面,并且使用以下代码禁用了用户名字段上的空格键:

<script type='text/javascript'>
//<![CDATA[ 
    $(window).load(function(){
        $("#username").on("keydown", function (e) {
            return e.which !== 32;
        });
    });
//]]>  

</script>

但是,我刚刚发现了其他也会导致系统出现问题的字符。如何禁用任何非罗马字符或其他符号?诸如此类:á,#~!ČΨΩヲЖ</p>

4

2 回答 2

1

您可以使用任一正则表达式来解决此问题。

如果您只想包含字符集 AZ、az 和 0-9(没有重音符号),那么您可以使用以下正则表达式来识别字符是否在这些集中:

/^[a-zA-Z0-9]/.test(e)

更好的是,当输入无效字符时,您可以在输入旁边放置警告,而不是干扰用户的键输入(这可能令人沮丧)。假设您有一个<span id="warning"></span>next to <input id="username">

$("#username").on("keydown", function (e) {
    if ( !( /^[a-zA-Z0-9]/.test(e) ) ) {
        $("#warning").text("Only values from a-z, A-Z, and 0-9 are valid");
    }
});
于 2013-05-16T10:24:56.157 回答
1

您可以创建一个 charCode 范围并挑选您需要的内容:

$("#username").on("keydown", function (e) {
    var charcode = e.which;
    if ( (charcode === 8) || // Backspace
        (charcode >= 48 && charcode <= 57) || // 0 - 9
        (charcode >= 65 && charcode <= 90) || // a - z
        (charcode >= 97 && charcode <= 122)) { // A - Z
        console.log(charcode)
    } else {
        e.preventDefault()
        return
    }
});

http://jsfiddle.net/CC6BW/3/

不要忘记为您不需要的内容设置默认值

拉丁图表在这里: http ://www.idautomation.com/product-support/ascii-chart-char-set.html

于 2013-05-16T10:29:44.093 回答