仅限javascript中的文本框验证

时间:2018-02-10 07:12:43

标签: javascript jquery

var NumberOnly = function () {
$(".number").keypress(function (e) {
    e = e || window.event;
    var code = e.keyCode || e.which;
    if ((code >= 48 && code <= 57) || (code == 8) || (code == 9)) {
        return true;
    }
    else {
        return false;
    }
});

$('.number').on({
    focus: function () {
        if (this.value == '0') this.value = '';
    },
    blur: function () {
        if (this.value == '') this.value = '0';
    }
});

}

我正在使用上述功能来确保文本框只能接受数字。但是,如果我输入1.5,则因为点(。)而拒绝了该值。任何人都知道如何修改它,使0.5或10.5等值也被认为是有效的?

3 个答案:

答案 0 :(得分:0)

46条件中添加if(ascii代码点)作为有效代码

$(".number").keypress(function (e) {
    e = e || window.event;
    var code = e.keyCode || e.which;
    if ((code >= 48 && code <= 57) || (code == 8) || (code == 9) || (code==46)) {
        return true;
    }
    else {
        return false;
    }
});

答案 1 :(得分:0)

你也可以使用正则表达式来匹配这样的东西

&#13;
&#13;
$(".number").keyup(function () {
    var value = $(this).val();
    var valid = (value.match(/^-?\d*(\.\d+)?$/));
    if (valid) {
        $("#error").html("Valid");
    }
    else {
        $("#error").html("Invalid");
    }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="" class="number">
<div id="error"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

通过在允许的按键代码中允许使用密钥代码46,您的问题应该得到解决。

         $(".number").keypress(function (e) {
                e = e || window.event;
                var code = e.keyCode || e.which;
                if ((code >= 48 && code <= 57) || (code == 8) || (code == 9) || (code == 46)) {
                    return true;
                }
                else {
                    return false;
                }
            });

            $('.number').on({
                focus: function () {
                    if (this.value == '0') this.value = '';
                },
                blur: function () {
                    if (this.value == '') this.value = '0';
                }
            });