【问题标题】:How can I disable non-romanised characters and symbols in a text field?如何禁用文本字段中的非罗马化字符和符号?
【发布时间】:2013-05-11 04:25:27
【问题描述】:

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

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

</script>

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

【问题讨论】:

  • 这是一个完全有效的问题,但用户键入字符却不显示它们可能会令人沮丧。更好的解决方案可能是在输入框旁边显示警告,例如“只允许使用字符 A-Z、a-z、0-9”。
  • 更好的解决方案是到处使用 unicode。
  • 你能帮我写一个代码吗?恐怕我不知道从哪里开始。

标签: javascript html css forms


【解决方案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

【讨论】:

  • 谢谢完美,谢谢!任何想法如何也允许退格?这样用户可以在输入错误时编辑错误?
  • 这不允许使用箭头键(来回编辑某些内容),但它允许使用数字键盘符号“/*+-”。
  • 一切都可以根据 charcode 推迟或推迟。只需根据您的需要进行设置
【解决方案2】:

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

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

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

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

$("#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");
    }
});

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 2015-11-28
    • 2020-02-20
    • 2020-12-15
    • 1970-01-01
    • 2011-12-05
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多