当用户制表时,金额字段文本框(十进制值)的自动格式,每3位具有昏迷

本文关键字:格式 3位 昏迷 十进制 用户 金额 字段 文本 | 更新日期: 2023-09-27 18:28:54

有人能帮我编写以下需求或场景的代码吗。。。我达到了80%,但坚持使用自动格式。。。这对我来说很傻,但很新鲜:(

好吧,我的商业用户希望有一个大金额字段文本框,该文本框应该只允许2个小数点。即,当她键入1000时,它应该自动格式化为"1000.00",当她输入1000000时,应该像"1000000.00",而当她键入1K时,它应该自动格式化为"1000.00",当她键入10000.23时,它应该是"10000.23",M/M应该是million,b/b应该是billion。我可以实现所有这些M/M、k/k等,并将小数点限制在2个小数点以内。甚至我也保留了验证,所有类似的都不允许使用除k/k、m/m、b/b、"."answers","之外的任何字符。还请记住,如果用户只提到2k,它应该是"2000.00",也就是说,如果她没有为十进制输入值,或者在文本框中的数字值中没有".",那么它应该是23333.32的"数字.00",而23333.32应该显示为"23333.32"

但我有一个问题,就是从第一位到小数点左边,每隔3位就用昏迷来实现输入的自动格式。我不知道如何对昏迷进行自动格式化。。。只有当用户完成输入并按下tab键时,才会发生这种情况。请帮助我实现这一点:(如果你能像上面那样为我分享示例代码,我会非常高兴。(请考虑我提到的所有场景,同时我们尝试为此编写代码):)同时我也会锻炼实现这一目标的方法。。。我知道这对你来说可能很傻,但对我来说是新的:(……谢谢大家……

当用户制表时,金额字段文本框(十进制值)的自动格式,每3位具有昏迷

String.Format("{0:0,0.00}", 12345.67); // 12,345.67
String.Format("{0:0,0.00}", 12345.6); // 12,345.60
String.Format("{0:0,0.00}", 12345); // 12,345.00
String.Format("{0:0,0.##}", 12345.67); // 12,345.67
String.Format("{0:0,0.##}", 12345.6); // 12,345.6
String.Format("{0:0,0.##}", 12345); // 12,345

当文本框失去焦点时:

double value;
if (double.TryParse(txtBox.Text, out value))
{
    txtBox.Text = String.Format("...", value);
}
else
{
    // Some code to handle the bad input (not parsable to double)
}
 function decimalformat(amount) {
        var delimiter = ","; // replace comma if desired
        var a = amount.split('.', 2)
        var d = a[1];
        var i = parseInt(a[0]);
        if (isNaN(i)) { return ''; }
        var minus = '';
        if (i < 0) { minus = '-'; }
        i = Math.abs(i);
        var n = new String(i);
        var a = [];
        while (n.length > 3) {
            var nn = n.substr(n.length - 3);
            a.unshift(nn);
            n = n.substr(0, n.length - 3);
        }
        if (n.length > 0) { a.unshift(n); }
        n = a.join(delimiter);
        if (d.length < 1) { amount = n; }
        else { amount = n + '.' + d; }
        amount = minus + amount;
        return amount;
    }

请在您的文本框

上试用此功能