文本框仅允许使用jquery的十进制数字

时间:2018-02-28 08:08:40

标签: javascript jquery regex

我有一个文本框。它应该只允许十进制数字,而点后面只允许两个数字(例如34545.43)。我们如何使用jquery做到这一点我已经搜索了谷歌和stackoverflow但不满意的答案因为一些脚本不能在chrome和firefox中工作。我试过但是它工作不正常。所以需要帮助怎么做。http://jsfiddle.net/S9G8C/1685/

JS:

$('.allow_decimal').keyup(function (evt) {
    var self = $(this);
    self.val(self.val().replace(/[^0-9\.]/g, ''));
    if ((evt.which != 46 || self.val().indexOf('.') != -1) && (evt.which < 48 || evt.which > 57)) {
        evt.preventDefault();
    }
});

1 个答案:

答案 0 :(得分:2)

这个jQuery函数将舍入textbox的blur事件的值

$.fn.getNum = function() {
    var val = $.trim($(this).val());
    if(val.indexOf(',') > -1) {
        val = val.replace(',', '.');
    }
    var num = parseFloat(val);
    var num = num.toFixed(2);
    if(isNaN(num)) {
        num = '';
    }
    return num;
}
$(function() { //This function will work on onblur event 
    $('#txt').blur(function() {
        $(this).val($(this).getNum());
    });

});
Number: <input type="text" id="txt" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

当用户输入第3位数字时,您可以直接删除。

    var txt = document.getElementById('txtId');
    txt.addEventListener('keyup', myFunc);
    
    function myFunc(e) {
        var val = this.value;
        var re = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)$/g;
        var re1 = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)/g;
        if (re.test(val)) {
            //do something here
    
        } else {
            val = re1.exec(val);
            if (val) {
                this.value = val[0];
            } else {
                this.value = "";
            }
        }
    }
    <input id="txtId" type="text"></input>