jQuery从所有浏览器获取数字输入

时间:2015-04-14 20:15:01

标签: javascript jquery html validation jquery-mobile

我希望用户在焦点位于输入项目时按数字键,浏览器应转到foo.com/[number]

这是我正在使用的代码:

function isNumberKey(evt){
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode != 46 && charCode > 31 
    && (charCode < 48 || charCode > 57))
        return false;
    return true;
}

$(document).ready(function(){

    $('.my_input').keypress(function(event){
        if(isNumberKey(event)){
            window.location='foo.com/'+(event.keyCode-48);
        }
   });

});

适用于Google Chrome,但Firefox用户遇到错误。我还想实现一个移动版本,用户可以在其中输入数字,然后按&#34;输入&#34;移动设备的关键。

如何确保这适用于所有支持javascript的浏览器?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是您的代码已更正,但我认为这不是您所追求的。请注意,从数字键盘返回的charcode与数字键行的charcode不同。

function isNumberKey(evt){
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if ((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <= 105)) { //0-9 only (inc numpad)
        return true;
    }
    return false;
}

$(document).ready(function(){
    $("input[type='number']").on("keyup",function(evt){
      if(isNumberKey(evt)){
            var charCode = (evt.which) ? evt.which : evt.keyCode;
            //window.location='foo.com/'+(charCode-48);
            alert('foo.com/'+(charCode-48));//minus 48 wont work if numpad
        }
   });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" value="" />

最好只获取输入的value ...

$(document).ready(function(){
    $("input[type='number']").on("keyup",function(){
        var val = parseInt(this.value);
        this.value="";
        if(val>0){
            alert('foo.com/'+val);
        }
   });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" value="" />