jQuery - 如何允许numpad和数字键行输入;以及防止输入特殊字符?

时间:2017-11-17 05:20:38

标签: javascript jquery html

我想在键盘上同时使用数字键盘数字和数字。目前,它只允许数字键行。我也只想输入数字,但它目前允许使用特殊字符。

$(document).ready(function() {
  $('#price').keydown(function(event) {
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57) && event.which != 8) {
            event.preventDefault();
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='price'>

4 个答案:

答案 0 :(得分:1)

看看这个plug-in (Fork of texotela's numeric jquery plugin). This (jStepper)是另一个。

如果你想自己构建它,这是一个link

  $(document).ready(function() {
    $("#txtboxToFilter").keydown(function (e) {
        // Allow: backspace, delete, tab, escape, enter and .
        if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
             // Allow: Ctrl+A, Command+A
            (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) || 
             // Allow: home, end, left, right, down, up
            (e.keyCode >= 35 && e.keyCode <= 40)) {
                 // let it happen, don't do anything
                 return;
        }
        // Ensure that it is a number and stop the keypress
        if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
            e.preventDefault();
        }
    });
});

注意:如果您的网页使用HTML5,则可以使用内置的<input type="number">并使用min和max属性来控制最小值和最大值。

$(function() {
  $('#staticParent').on('keydown', '#child', function(e){-1!==$.inArray(e.keyCode,[46,8,9,27,13,110,190])||(/65|67|86|88/.test(e.keyCode)&&(e.ctrlKey===true||e.metaKey===true))&&(!0===e.ctrlKey||!0===e.metaKey)||35<=e.keyCode&&40>=e.keyCode||(e.shiftKey||48>e.keyCode||57<e.keyCode)&&(96>e.keyCode||105<e.keyCode)&&e.preventDefault()});
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="staticParent">
    <input id="child" type="textarea" />
</div>

我在here

上接受了这项工作

如果对你有帮助。请先投票给第一作家。

答案 1 :(得分:1)

更新了您的代码

$(document).ready(function() {
  $('#price').keydown(function(event) {
        if((event.which >= 48 && event.which <= 57) && event.shiftKey) {
            event.preventDefault();    
        }
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57) && event.which != 8) {
            event.preventDefault();
        }
    });
});

答案 2 :(得分:0)

使用keypress代替keydown

然后

09的keyCode为4857所以请使用此条件

if (event.keyCode < 48 || event.keyCode > 57) {
   event.preventDefault(); 
}

如果您输入的密钥不是0,1,2,3,4,5,6,7,8和9或不是数字

,则此条件返回true

所以你的代码就像这样

$(document).ready(function() {
  $('#price').keypress(function(event) {
       if (event.keyCode < 48 || event.keyCode > 57) {
           event.preventDefault(); 
       }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='price'>

答案 3 :(得分:0)

为什么我们不输入用户输入的类型号码。我想这样做很容易:

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='number' id='price'>
&#13;
&#13;
&#13;