65.9K
CodeProject 正在变化。 阅读更多。
Home

JavaScript 实现十进制数值验证和四舍五入

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

11050

大家好,我创建了一个 JavaScript 函数,可以验证任何文本框中的十进制值。通过这个 JavaScript,我们可以绑定

大家好,

我创建了一个 JavaScript 函数,可以验证任何文本框中的十进制值。

通过这个 JavaScript,我们可以限制用户在文本框中只能输入数字。当用户输入任何十进制值时,JavaScript 会将其四舍五入到小数点后两位。

以下是这个 JavaScript 代码:

 <script language="JavaScript" type="text/javascript">

        function round_decimals() {
            var val = document.getElementById('<%=txtamount.ClientID %>').value;
            var result1 = parseFloat(val) * Math.pow(10, 2);
            var result2 = Math.round(result1);
            var result3 = result2 / Math.pow(10, 2);
            document.getElementById('<%=txtamount.ClientID %>').value = pad_with_zeros(result3, 2);
        }

        function pad_with_zeros(rounded_value, decimal_places) {

            // 将数字转换为字符串
            var value_string = rounded_value.toString()

            // 查找小数点
            var decimal_location = value_string.indexOf(".")

            // 是否存在小数点?
            if (decimal_location == -1) {

                // 如果不存在,则用 0 填充所有小数位
                decimal_part_length = 0

                // 如果 decimal_places 大于零,则添加一个小数点
                value_string += decimal_places > 0 ? "." : ""
            }
            else {

                // 如果存在,则仅用 0 填充额外的十进制位
                decimal_part_length = value_string.length - decimal_location - 1
            }

            // 计算需要用 0 填充的十进制位数
            var pad_total = decimal_places - decimal_part_length

            if (pad_total > 0) {

                // 用 0 填充字符串
                for (var counter = 1; counter <= pad_total; counter++)
                    value_string += "0"
            }
            return value_string
        }

        //-->
    </script>

现在,以下是在文本框中放置它的 ASPX 页面:

<asp:TextBox ID="txtamount" onblur="javascript:round_decimals()" runat="server"></asp:TextBox>

我已经在 IE7/IE8/FF/Safari/Google Chrome 中测试过这个 JavaScript 代码。

 

© . All rights reserved.