使用Javascript仅允许文本框中的数值

时间:2011-09-17 12:04:34

标签: javascript

我想只允许在文本中输入数值,如果用户输入字母字符,则应警告用户。 有关优化和简短的JavaScript代码的任何建议吗?

9 个答案:

答案 0 :(得分:7)

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

来自here

答案 1 :(得分:5)

使用以下代码

function numericFilter(txb) {
   txb.value = txb.value.replace(/[^\0-9]/ig, "");
}

在按键上调用

<input type="text" onKeyUp="numericFilter(this);" />

答案 2 :(得分:2)

这是一个阻止所有非数字输入进入文本字段的解决方案。

html

<input type="text" id="numbersOnly" />

javascript

var input = document.getElementById('numbersOnly');
input.onkeydown = function(e) {
    var k = e.which;
    /* numeric inputs can come from the keypad or the numeric row at the top */
    if ( (k < 48 || k > 57) && (k < 96 || k > 105)) {
        e.preventDefault();
        return false;
    }
};​

答案 3 :(得分:2)

请注意,您还应该允许“系统”键

    $(element).keydown(function (e) {
    var code = (e.keyCode ? e.keyCode : e.which), value;
    if (isSysKey(code) || code === 8 || code === 46) {
        return true;
    }

    if (e.shiftKey || e.altKey || e.ctrlKey) {
        return ;
    }

    if (code >= 48 && code <= 57) {
        return true;
    }

    if (code >= 96 && code <= 105) {
        return true;
    }

    return false;
});

function isSysKey(code) {
    if (code === 40 || code === 38 ||
            code === 13 || code === 39 || code === 27 ||
            code === 35 ||
            code === 36 || code === 37 || code === 38 ||
            code === 16 || code === 17 || code === 18 ||
            code === 20 || code === 37 || code === 9 ||
            (code >= 112 && code <= 123)) {
        return true;
    }

    return false;
}

答案 4 :(得分:2)

//在文本框中仅输入数值的解决方案

$('#num_of_emp').keyup(function () { 
    this.value = this.value.replace(/[^0-9.]/g,'');
});

用于输入框,例如:

<input type='text' name='number_of_employee' id='num_of_emp' />

答案 5 :(得分:1)

@Shane,您可以随时代码中断,任何用户都可以按住任何文本键,例如(hhhhhhhhh),您可以允许保持该值不变。

为了更安全,请使用:

$("#testInput").keypress(function(event){

而不是:

$("#testInput").keyup(function(event){

我希望这会对某人有所帮助。

答案 6 :(得分:0)

function isNumber(n){
  return (parseFloat(n) == n);
}

http://jsfiddle.net/Vj2Kk/2/

答案 7 :(得分:0)

此代码使用event对象的.keyCode属性来检查键入给定字段的字符。如果按下的键是一个数字,什么都不做;否则,如果是一封信,请提示“错误”。如果它不是这些东西,则返回false。

HTML:

<form>
    <input type="text" id="txt" />
</form>

JS:

(function(a) {
    a.onkeypress = function(e) {
        if (e.keyCode >= 49 && e.keyCode <= 57) {}
        else {
            if (e.keyCode >= 97 && e.keyCode <= 122) {
                alert('Error');
                // return false;
            } else return false;
        }
    };
})($('txt'));

function $(id) {
    return document.getElementById(id);
}

结果:http://jsfiddle.net/uUc22/

请注意.keyCode.onkeypress.onkeydown的{​​{1}}结果彼此不同。

答案 8 :(得分:0)

Javascript仅适用于文本框中的数字::

<input type="text" id="textBox" runat="server" class="form-control" onkeydown="return onlyNos(event)" tabindex="0" /> 


    <!--Only Numeric value in Textbox Script -->
        <script type="text/javascript">
            function onlyNos(e, t) {
                try {
                    if (window.event) {
                        var charCode = window.event.keyCode;
                    }
                    else if (e) {
                        var charCode = e.which;
                    }
                    else { return true; }
                    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
                        return false;
                    }
                    return true;
                }
                catch (err) {
                    alert(err.Description);
                }
            }
        </script>
        <!--Only Numeric value in Textbox Script -->