input输入框实时显示计算,不能有多余的.,结果保留两位小数

<input id="task_num" type="text" oninput = "handleMoney(this,0);">
<input id="task_price" type="text" oninput = "handleMoney(this,1);">
function handleMoney(obj,type){//0代表不要小数,1代表代表保留两位小数
        if(type == 0){
            obj.value = obj.value.replace(/[^\d]/g, '');//没有.
            obj.value = obj.value.replace(/\.{2,}/g, '.');
            obj.value = obj.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
            //(\d\d)代表保留两位,(\d)代表保留一位,以此类推....
            obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
            if (obj.value.indexOf('.') < 0 && obj.value != '') {
                obj.value = parseFloat(obj.value);
            }
            if ((obj.value.length == 1 && obj.value == '.') || obj.value.substring(0,1) == '.') {
                obj.value = '';
            }
        }else{
            obj.value = obj.value.replace(/[^\d.]/g, '');//有.
            obj.value = obj.value.replace(/\.{2,}/g, '.');//2即两位
            obj.value = obj.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
            obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
            if (obj.value.indexOf('.') < 0 && obj.value != '') {
                obj.value = parseFloat(obj.value);
            }
            if ((obj.value.length == 1 && obj.value == '.') || obj.value.substring(0,1) == '.') {
                obj.value = '';
            }
        }

        var value1 = $('#task_num').val();
        var value2 = $('#task_price').val();
        if(value1 && value2){
            var res = value1*value2;
            $('#money').val(res.toFixed(2));
        }else{
            $('#money').val(0);
        }
    }

标签: none

添加新评论