0

我想让用户控制以获得这样的数字:

125.00
125
125.27
125.20
1231545.25
2566.66

我尝试过使用掩码文本框,但它的长度可以是任何东西。我使用了带有 Javascript 的文本框,它接受这样的数字: 单击此处

如果有可用的 Javascript 插件,请告诉我,或任何接受价格格式值的代码。

限制用户在输入时仅插入数字和两个小数空格。

如果数字格式不正确,则在文本更改后剪切并格式化数字。

就像如果 125.2 然后 125.20 或如果 125 然后 125.00 或 135156。然后 135156

我在互联网上搜索过,但没有找到插件或脚本。

我有一个像 numeric.js 这样的插件,但它不限制小数位。

如果有任何 Javascript 可用,请发布。

我不想进行验证以检查输入的值;我想接受有限制的值。

请帮我。

4

3 回答 3

1

您可以使用Ajax Control Toolkit MaskedEdit控件:

MaskedEdit是一个ASP.NET AJAX 扩展器,它附加到 TextBox 控件以限制可以输入的文本类型。MaskedEdit 将“掩码”应用于仅允许输入某些类型的字符/文本的输入。支持的数据格式有:数字、日期、时间和日期时间。MaskedEdit 使用 CultureName 属性中指定的区域性设置。如果没有指定,文化设置将与页面相同:英语(美国)。

示例代码:

<ajaxToolkit:MaskedEditExtender  
    TargetControlID="TextBox2"   
    Mask="9,999,999.99"  
    MessageValidatorTip="true"   
    OnFocusCssClass="MaskedEditFocus"   
    OnInvalidCssClass="MaskedEditError"  
    MaskType="Number"   
    InputDirection="RightToLeft"   
    AcceptNegative="Left"   
    DisplayMoney="Left"  
ErrorTooltipEnabled="True"/> 

见工作演示

于 2012-09-25T09:57:43.287 回答
0

我也有同样的问题。这段代码解决了我的问题。这个解决方案正是你想要的。它不仅可以格式化你的十进制数,还可以消除空格。试试这个。在我的情况下,我允许用户输入“+”或“-”,所以我也检查了这个验证。

<script type="text/javascript">
        function checkforvalidation() {
            var txtvalue = document.getElementById('<%=txtspherical.ClientID %>').value;
            var leftstr = "";
            var rightstr = "";
            var tempstr = "";
            var operator = "";
            txtvalue = txtvalue.replace(/\s/g, '');
            document.getElementById('<%=txtspherical.ClientID %>').value = txtvalue;
            if (txtvalue.indexOf(".") != -1) {

                leftstr = txtvalue.split(".")[0];
                rightstr = txtvalue.split(".")[1];
                if (leftstr.indexOf("-") == 0 || leftstr.indexOf("+") == 0) {

                    operator = leftstr.substr(0, 1);
                    tempstr = leftstr.substr(1, leftstr.length - 1);

                    leftstr = ltrim(tempstr, '0');

                    if (leftstr.length == 0) {
                        leftstr = '0';
                    }

                    if (rightstr.indexOf("-") == -1 || rightstr.indexOf("+") == -1) {

                        rightstr = ltrim(rightstr, '0');

                        rightstr = chkdecimalpoints(rightstr);
                        if (operator != null || operator != "") {
                            txtvalue = operator + leftstr + "." + rightstr;
                        }
                        else {
                            txtvalue = leftstr + "." + rightstr;
                        }
                        document.getElementById('<%=txtspherical.ClientID %>').value = txtvalue;
                    }
                    else {
                        document.getElementById('<%=txtspherical.ClientID %>').value = "";
                    }
                }
                else {

                    tempstr = leftstr.substr(0, leftstr.length);
                    leftstr = ltrim(tempstr, '0');
                    if (leftstr.length == 0) {
                        leftstr = '0';
                    }
                    if (rightstr.indexOf("-") == -1 || rightstr.indexOf("+") == -1) {

                        rightstr = rtrim(rightstr, '0');
                        rightstr = chkdecimalpoints(rightstr);
                        txtvalue = leftstr + "." + rightstr;
                        document.getElementById('<%=txtspherical.ClientID %>').value = txtvalue;
                    }
                }
            }
            else if (txtvalue.indexOf("-") == -1 || txtvalue.indexOf("+") == -1) {

                txtvalue = ltrim(txtvalue, '0');
                if (txtvalue.length == 0) {
                    txtvalue = '0';
                }
                if (operator != null || operator != "") {
                    txtvalue = operator + txtvalue + ".00";
                }
                // txtvalue = leftstr + "." + rightstr;
                document.getElementById('<%=txtspherical.ClientID %>').value = txtvalue;
            }
            else if (txtvalue.indexOf("-") == 0 || txtvalue.indexOf("+") == 0) {

                operator = txtvalue.substr(0, 1);
                tempstr = txtvalue.substr(1, leftstr.length - 1);
                txtvalue = alltrim(tempstr, '0');
                if (operator != null || operator != "") {
                    txtvalue = operator + txtvalue + ".00";
                    document.getElementById('<%=txtspherical.ClientID %>').value = txtvalue;
                }
            }
        }

        function chkdecimalpoints(rightstr) {
            if (rightstr.length == 0) {
                rightstr = '00';

                return rightstr;

            }
            else if (rightstr.length == 1) {
                rightstr = rightstr + '0';
                return rightstr;
            }
            else if (rightstr.length > 2) {

                var tempvar = rightstr.substr(2, 1);

                if (tempvar >= 5) {

                    tempvar = parseInt(rightstr.substr(1, 1)) + 1;
                    tempvar = rightstr.substr(0, 1) + tempvar.toString();
                    if (tempvar.length > 2) {
                        tempvar = tempvar.substr(0, 2);
                    }
                    return tempvar;
                }
                else {

                    tempvar = rightstr.substr(0, 2);
                    return tempvar;
                }
            }
            else {
                return rightstr;
            }
        }
        function ltrim(str, chars) {
            chars = chars || "\\s";
            return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
        }
        function rtrim(str, chars) {
            chars = chars || "\\s";
            return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
        }
        function alltrim(str, chars) {
            chars = chars || "\\s";
            return str.replace(new RegExp("^[" + chars + "]+$", "g"), "");
        }

    </script>

HTML 源代码:

<asp:TextBox ID="txtspherical" runat="server" OnBlur="javascript:checkforvalidation();">
        </asp:TextBox>
于 2012-09-25T10:15:35.207 回答
0
function validNumber(input){
    input=input.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"");
    if( input.match(/\d+\.*\d*/i) ){
        input=input.match(/(\d+\.*\d*)/i)[1].replace(/\.$/i, "");
        if(!input.match(/\./i)) input+=".00";
        if(input.match(/\.(\d+)/i)[1].length<2) input+="0";
        return input;
    }else{
        return "0.00";
    }
}
于 2012-09-28T18:15:19.720 回答