【问题标题】:charCode function returns 0 value for backspacecharCode 函数为退格返回 0 值
【发布时间】:2016-06-05 09:43:52
【问题描述】:

我正在尝试使用自定义 jQuery 函数过滤用户输入:

$(document).ready(function(){
$('#afm').keypress(function(key){

    var len = $('#afm').val().length;
    console.log(key.charCode);

    if( key.charCode < 8   || (key.charCode > 8 && key.charCode < 48) || key.charCode > 57 && len < 9){ 

        $('#tip-afm').text("error");
        return false;
    }
    else
        $('#tip-afm').text("");
 })
})

每当我按退格键时,console.log 都会将 charCode 显示为 0。 据我所知 8 是分配给退格键的代码.. 难道我做错了什么? 我是否必须更改代码才能将退格的代码处理为 0?否则将来可能会导致错误?

【问题讨论】:

  • 您应该使用keyCode 而不是charCode。 `console.log(event.keyCode);
  • 您使用的是什么操作系统/浏览器?例如。 firefox for android 有 keyCode=0 到字母和退格,在 chrome for android keyCode=229
  • 我使用的是 Firefox..但是如何限制用户输入而不受所使用的浏览器的影响?

标签: javascript jquery


【解决方案1】:

您必须使用 jQuery.keyup() 而不是 jQuery.keypress() 并使用 key.keyCode 而不是 key.charCode

代码如下:

$(document).ready(function(){
$('#afm').keyup(function(key){

    var len = $('#afm').val().length;
    console.log(key.keyCode);

    if( key.keyCode < 8   || (key.keyCode > 8 && key.keyCode < 48) || key.keyCode > 57 && len < 9){ 

        $('#tip-afm').text("error");
        return false;
    }
    else
        $('#tip-afm').text("");
 })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="afm">
<div id="tip-afm">

</div>

【讨论】:

    【解决方案2】:

    当用户输入退格键时,keypress 事件可能不会被触发。检查这个答案,您可能想使用keyup。另请查看我对另一个问题的回答:https://stackoverflow.com/a/30108293/2314737

    【讨论】:

    • 我决定使用 charCode 来做到这一点,事实证明这是最简单的解决方案,因为对于页面将支持的所有浏览器(firefox、chrome 和 explorer),我的 charCode 都是 0。你的 jsfiddle 帮助了我弄清楚这一点。非常感谢任何其他可用的想法/建议:)
    【解决方案3】:

    使用这个检查字符:

    key.whichkey.keyCode

    【讨论】:

      【解决方案4】:

      用这个来获取按键的代码

      var code = e.keyCode || e.which;
      

      【讨论】:

        猜你喜欢
        • 2018-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-03
        • 2021-12-30
        • 1970-01-01
        • 2023-02-11
        • 2015-12-03
        相关资源
        最近更新 更多