代码之家  ›  专栏  ›  技术社区  ›  wows

javascript:如何检查表单字段上按下的键是否为数字(0-9)?

  •  8
  • wows  · 技术社区  · 15 年前

    我在javascript的表单字段中使用onkeyup事件,我想检查按下的键是否是数字-即0-9,这样我就可以对输入进行一些操作。

    <input type="text" onkeyup="" />
    

    我需要使用regex吗?

    谢谢

    5 回复  |  直到 6 年前
        2
  •  3
  •   Gibolt    6 年前

    使用 event.key 得到实际值。要检查是否为整数,只需使用 isFinite

    input.addEventListener("keydown", function(event) {
        const isNumber = isFinite(event.key);
    });
    

    其他选择:

    const isNumber = /^[0-9]$/i.test(event.key)
    

    更简单的HTML解决方案是使用 number 类型输入。它只限于数字(有点)。

    <input type="number">
    

    无论哪种方法,您都应该使用以下命令清除所有用户输入:

    string.replace(/[^0-9]/g,'');
    
        3
  •  0
  •   Sacky San    8 年前

    我使用以下函数检查给定的字符串是否为数字

    // Validate Numeric inputs
    function isNumber(o) {
        return o == '' || !isNaN(o - 0);
    }
    

    假设keyup或keydown事件上的密钥代码在key code变量中:

    var keyCode = e.keyCode || e.which;
    if (keyCode >= 96 && keyCode <= 105) {
            // Numpad keys
            keyCode -= 48;
    }
    console.log(isNumber(String.fromCharCode(keyCode)));
    
        4
  •  0
  •   Rm558    7 年前

    只允许0-9,其他字母将被吞食。

    $('#id').keypress(function (e) {
                var validkeys = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
                if (validkeys.indexOf(e.key) < 0)
                    return false;
            });
    
        5
  •  -1
  •   madcolor    15 年前

    看到这个:

    http://www.javascriptkit.com/javatutors/javascriptkey2.shtml

    <script type="text/javascript">
    function displayunicode(e){
    var unicode=e.keyCode? e.keyCode : e.charCode
    if unicode >= 48 && unicode <= 57 {
        alert('number')
    }
    else{
    }
        alert('nonnumber')
    }
    </script>
    <form>
    <input type="text" size="2" maxlength="1" onkeyup="displayunicode(event); this.select()" />
    </form>