文本框仅接受十进制值,并应在十进制后追加2零

时间:2015-04-01 09:56:56

标签: javascript c# jquery asp.net decimal

我正在验证我的页面,其中有3个文本框。第一个文本框用于选择日期,第二个用于插入十进制值,第三个用于插入十进制值。

实际上我正在尝试的是,如果假设用户输入一些值,比如123而不是123.00,那么文本框本身应该在用户插入的值的末尾附加.00以使其成为小数。这是我的 Javascript 代码

$(document).ready(function () {
});

function ValidateAddNewCourseCharge() {
var EffectiveDate = $.trim($("[id$='txtFromDate']").val());
var AdminCharge = $.trim($("[id$='txtAdminCharges']").val().attr("#.00"));
var OtherCharge = $.trim($("[id$='txtOtherCharges']").val().attr("#.00"));

isValidDate(EffectiveDate);
if (EffectiveDate == "__-__-____") {
    showErrorMessagePopUp("Please select Date!");
    return false;
}
else {
    if (isValidDate(EffectiveDate) == false) {
        showErrorMessagePopUp("Please Select Valid Date for Course Amount!");
        return false;
    }
}

if (AdminCharge == "") {
    showErrorMessagePopUp("Please Enter Admin Charge!");
    return false;
}
else {
    if (isValidPrice(AdminCharge) == false) {
        showErrorMessagePopUp("Please Enter Valid Admin Amount!");
        return false;
    }
    if (AdminCharge == checkPrice(AdminCharge))
    {
        showErrorMessagePopUp("Please Enter Valid Admin Amount!");
        return false;
    }
}

if (OtherCharge == "") {
    showErrorMessagePopUp("Please Enter Other Charge!");
    return false;
}
else {
    if (isValidPrice(OtherCharge) == false) {
        showErrorMessagePopUp("Please Enter Valid Other Amount!");
        return false;
    }
    if (OtherCharge == checkPrice(OtherCharge)) {
        showErrorMessagePopUp("Please Enter Valid Other Amount!");
        return false;
    }
}
return true;
}

function isValidDate(number) {
var regex = /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/
return regex.test(number);
}

function isValidPrice(number) {
var regex = /^\d{0,12}(\.\d{0,2})?$/
return regex.test(number);
}

function checkPrice(el) {
var ex = /^[0-9]+\.?[0-9]*$/;
el.value = parseFloat(el.value).toFixed(2);
if (ex.test(el.value) == false) {
    el.value = '';
}
}

我在点击按钮时调用此功能。

<asp:Button ID="btnAddCharge" runat="server" CssClass="btn btn-success"  OnClick="btnAddCharge_Click" OnClientClick="return ValidateAddNewCourseCharge();" />

3 个答案:

答案 0 :(得分:0)

上周我遇到了类似的问题

这是我提出的(depthUnit设置在别处,例如“m”或“ft”)

function manageUnitField(inputBox) {
$(inputBox).on("blur", function() {  //clicking off the inputbox causes the formatting
    var value = ($(this).val()).replace(/[^0-9\.]+/g, ''); //remove non-numeric and keep decimals decimals
    var i = 0; //
    value = value.replace(/\./g, function() { return i++ === 0 ? '.' : ''; }); //remove all but the first decimal
    value = value.replace(/^0+/, ''); // remove leading zeroes 
    // append depth unit
    if (value == "") {
        value = 0 + depthUnit;
    } else value = value + depthUnit;
    if (value.indexOf('.') == 0) {
        value = 0 + value;
    }
    $(this).val(value);
}).focus(function() {
    if ($(this).val() == 0 + depthUnit) {
        $(this).val('');
    }
});

}

如果没有任何小数或者小数点后没有任何内容,你可以使用depthUnit示例附加“.00”

编辑

你也可以使用

Math.round(number*100)/100

舍入到小数点后两位

答案 1 :(得分:0)

你可以通过以下方式完成。请记住,这是演示,您需要根据自己的需要进行调整。

&#13;
&#13;
$("[name='number-only']").on("change", function() {
    
    var val = this.value;
    if (val.match(/\./g)) { //See if it already has a dot
        if (val.replace(/\./g, "").match(/^\d+$/) !== null) { //Check if it's number after removing the dot
            this.value = parseFloat(val, 10).toFixed(2); //Yes, so format number
        } else {
            //Not a number, so reset the input value
            //Log a msg if need be: "Only numbers allowed!";
            this.value = "";
            this.focus();
        }
    } else {
        //No dot found, so, see if it's a number        
        if (val.match(/^\d+$/) !== null) {
            this.value = parseFloat(val, 10).toFixed(2); //Yes, so format number
        } else {
            //Not a number, so reset the input value
            //Log a msg if need be: "Only numbers allowed!";
            this.value = "";
            this.focus();
        }
    }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="number-only" />
&#13;
&#13;
&#13;

答案 2 :(得分:0)

function ValidateAddNewCourseCharge() {    
var AdminCharge = $.trim($("[id$='txtAdminCharges']").val());
var OtherCharge = $.trim($("[id$='txtOtherCharges']").val());
isValidDate(EffectiveDate);

if (AdminCharge == "") {
    showErrorMessagePopUp("Please Enter Admin Charge!");
    return false;
}
else {
    if (IsNumeric(AdminCharge)) {
        AdminCharge = parseFloat(AdminCharge).toFixed(2);
    }
    else {
        showErrorMessagePopUp("Admin Charge is not Valid. Please try again!");
        AdminCharge = "";
        return false;
    }
}

if (OtherCharge == "") {
    showErrorMessagePopUp("Please Enter Other Charge!");
    return false;
}
else {
    if (IsNumeric(OtherCharge)) {
        OtherCharge = parseFloat(OtherCharge).toFixed(2);
    }
    else {
        showErrorMessagePopUp("Other Charge is not Valid. Please try again!");
        OtherCharge = "";
        return false;
    }
}    
return true;
}

function IsNumeric(input) {
var RE = /^-{0,1}\d*\.{0,1}\d+$/;
// var RE = /^-{0,1}\d*\.{0,1}\d{2}$/; To Enable user to enter only decimal number
return (RE.test(input));
}

这项工作很好......