如何限制html号码输入(直播)中允许的数字量?

时间:2015-07-25 09:12:40

标签: javascript html html5 input numbers

基本上,我的页面上有一个数字输入字段,我希望用户只能在字段中插入 4 数字。我知道我可以这样做:

<input type="number" max="9999">

但是只有当我按下时,浏览器才会检查输入是否正确 “提交”按钮。我想要做的是:假设用户在框中键入“1234”,然后他尝试键入“1”或任何其他数字。我希望他不能那样做。基本上当他一直按下任何按钮/字母时,我希望它们不会出现在框中。

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:5)

&#13;
&#13;
var numberInput = document.getElementById('a');

numberInput.onkeypress = function(){
  console.log(this.value.length)
  if(this.value.length>3)
    return false
}
&#13;
<input id="a" type="number">
&#13;
&#13;
&#13;

为了使其一般化,请使用以下代码

&#13;
&#13;
var inputs = document.querySelectorAll('.restrictLength');

for( i  in inputs){
   inputs[i].onkeypress = function(){
         console.log(this.id,this.value.length,this.getAttribute('data-restrict-to'));
         if(this.value.length>Number(this.getAttribute('data-restrict-to'))-1)
           return false
}

}
&#13;
<input id="a" class="restrictLength" type="number" data-restrict-to="4"> restrict to 4
<br/>
<br/>
<input id="b" class="restrictLength" type="number" data-restrict-to="2"> restrict to 2
&#13;
&#13;
&#13;

答案 1 :(得分:2)

var specialKeys = new Array();
        specialKeys.push(8); //Backspace
        $(function () {
            $("#a").bind("keypress", function (e) {
                if(this.value.length>3){ return false}
                var keyCode = e.which ? e.which : e.keyCode
                var ret = ((keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);

                return ret;
            });
            $("#a").bind("paste", function (e) {
                return false;
            });
            $("#a").bind("drop", function (e) {
                return false;
            });
        });

    <input id="a" type="number">

答案 2 :(得分:1)

    <input type="number" id="userNumber">
        <input type="submit" id="numberSubmit" onclick="CheckValid()">
        <label id="warningMessage"></label>
        <script>
            function CheckValid(){
            var number = document.getElementById("userNumber").value;
            if(isNaN(number) || number.length != 4)
            {
                document.getElementById("warningMessage").innerHTML = "Invalid";
            }   
            else{
                document.getElementById("warningMessage").innerHTML = "Valid";
            }
            }
        </script>

答案 3 :(得分:1)

甜蜜而简单。

itemprop

注意:基于社区维基的解决方案:HTML Text Input allow only Numeric input

答案 4 :(得分:-1)

<input type="number" max="9999" maxlength="4">