0

我是 jQuery 新手,对如何在输入框中仅获取 1 到 5 的数字有点困惑。以下是我的代码:

HTML

<div id="errmsg"></div>

<input type="text" id="number" maxlength="1"/>

脚本

$(document).ready(function(e) {
$('#number').keydown(function(e){
if (e.which != 8 && e.which != 0 && (e.which < 49 || e.which > 53)) {
        //display error message
        $("#errmsg").html("Digits Only").show().fadeOut("slow");
               return false;
    }

    else if (e.which == 48 || e.which < 48 || e.which > 53) {
        //display error message
        $("#errmsg").html("5 Only").show().fadeOut("slow");
               return false;
    }
})

})
</script>

当用户在输入框中输入任何金额时,如果他输入任何字符,则会显示错误消息“仅限数字”。如果他输入的数字超过 5,则会显示错误“仅 5”消息。

4

2 回答 2

1

尝试这个

$(document).ready(function() {
    $("#number").keydown(function(event) {
        console.log(event.keyCode);
        if ( $.inArray(event.keyCode,[49,50,51,52,53]) !== -1) 
        {
                 alert("allow");
        }
        else {
            alert("not allow");      
        }
    });
  });

小提琴

于 2013-10-10T11:07:20.430 回答
0

感谢您已经接受了答案,但是对于它的价值,我认为这是一个更加用户友好的解决方案:JSFiddle

它处理通过数字键盘输入的控制字符(例如DelBackspace和)Tab和数字。Enter它还满足您对非数字字符和数字 > 5 的单独错误消息的要求。

$(document).ready(function() {
    $("#number").on('keyup', function(event) {

        var entered = $(this).val(),
            content = parseInt(entered,10);

        if (entered !== '' && isNaN(content)) {

            $('#errorMsg').text('Digits only');
            $(this).val('');

        } else if (content > 5) {

            $('#errorMsg').text('Only 5');
            $(this).val('');

        } else {

            $('#errorMsg').text('Okay');

        }
    });
});

但是,与其他解决方案不同的是,它不会阻止用户输入无效数据,而是会在输入后追溯删除字符。这可能会也可能不会满足您的期望。

于 2013-10-10T12:32:34.940 回答