JavaScript |如何在onkeypress上有效的数字值

时间:2016-09-07 06:18:00

标签: javascript javascript-events

我有这个简单的HTML文档

<input type="text"  id="my_text" onkeypress="valid_numbers(event);" size="30"/>
<script type="javascript">
function valid_numbers(e)
{
        var key=e.which || e.KeyCode;
        if  ( key >=48 && key <= 57)
         // to check whether pressed key is number or not 
                return true; 
         else return false;
}
</script>

我想要的是:

如果按下的键是数字,则my_text的onkeypress允许否则写入该字符。

但是上面的代码不起作用,my_text元素接受任何字符,上面的代码有什么问题?!..

请帮助!..

7 个答案:

答案 0 :(得分:2)

我认为这样做的简单方法是:

<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57' />

但是当你粘贴一些文字时出现了问题,那么HTML5的数字类型输入可能是更好的选择:

<input type="number" />

BTW 如果您搜索SO this,可以找到更好的建议。

答案 1 :(得分:1)

一些非常复杂的答案,但它可以像使用正则表达式返回检查输入是否为数字的结果一样简单:

&#13;
&#13;
<input onkeypress="return /\d/.test(String.fromCharCode(event.keyCode || event.which))">
&#13;
&#13;
&#13;

请注意,这不会通过粘贴,拖放或脚本停止输入非数字字符。

答案 2 :(得分:0)

没有试过这个,但你可以在你的函数中使用parseInt来检查:

var t = document.getElementById("my_test").value;

if (parseInt(t) == 'NaN') {
    // not a number
}

答案 3 :(得分:0)

<html>
<body>
    <input id="edValue" type="text" onKeyPress="edValueKeyPress()" onKeyUp="edValueKeyPress()"><br>
   </body>

<script>
    function edValueKeyPress()
    {
        var edValue = document.getElementById("edValue");
        var s = edValue.value;

        var lblValue = document.getElementById("lblValue");

      if  ( s >=48 && s <= 57)

         // to check whether pressed key is number or not 
               return true; 


         else return false;



    }
</script>    

</html>

使用此测试代码。它可以帮助您。

答案 4 :(得分:0)

var input = document.getElementById('my_text');
input.onkeydown = function(e) {
    var k = e.which;

    if ( (k < 48 || k > 57) && (k < 96 || k > 105) && k!=8) {
        e.preventDefault();
        return false;
    }
};

<input type="text"  id="my_text" size="30"/>

答案 5 :(得分:0)

您可以使用JavaScript或HTML5来执行此操作  的 JavaScript的:

<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57'></input>

HTML 5(不需要JavaScript,在许多现代浏览器中也不会以标准方式运行。)

<input type="number">

FIDDLE

有关此may look here.

的更多信息

答案 6 :(得分:0)

仅允许[0-9]数字,小键盘数字,箭头,BackSpace,Tab,Del和Ctrl + C,Ctrl + V,Ctrl + A一样。 只允许一个点。 如果模糊事件中最后一个字符为点,则将其删除。

element.on('keydown', function(e) {
    var arrowsKeyCodes = [37, 38, 39, 40];
    var numPadNumberKeyCodes = [96, 97, 98, 99, 100, 101, 102, 103, 104, 105];
    var dots = [110, 190];
    var tabBackDel = [8, 9, 46];
    var acv = [65, 67, 86];

    // Allow only one dot.
    if (e.target.value.indexOf('.') !== -1 && dots.indexOf(e.keyCode) !== -1) {
        event.preventDefault();
    }

    // allow only [0-9] number, numpad number, arrow,  BackSpace, Tab, Del
    // Ctrl + C, Ctrl + V, Ctrl + A
    if (
        (e.keyCode < 48 &&
            arrowsKeyCodes.indexOf(e.keyCode) === -1 || e.keyCode > 57 &&
            numPadNumberKeyCodes.indexOf(e.keyCode) === -1 &&
            dots.indexOf(e.keyCode) === -1
        ) &&
        tabBackDel.indexOf(e.keyCode) === -1 &&
        (e.ctrlKey === false || e.ctrlKey === true && acv.indexOf(e.keyCode) === -1)
    ) {
        e.preventDefault();
    }
});

element.on('blur', function(e) {
    var value = e.target.value;
    if (value.substring(value.length - 1) === '.')
        e.target.value = value.substring(0, value.length - 1)
});