我试图通过使用自定义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("");
 })
})

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

最佳答案

您必须使用 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>

关于javascript - charCode函数为退格键返回0值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35579495/

10-13 01:26