【问题标题】:Masked input for currency jQuery货币 jQuery 的屏蔽输入
【发布时间】:2011-09-09 09:03:03
【问题描述】:

在我的 Web 应用程序中,我有一个名为“预算”的输入字段,用户可以在其中输入项目的建议预算。我需要创建一个掩码输入,以便在用户在输入字段中输入时自动将输入的金额转换为以下格式:

1000
10 000
100 000

我在整个互联网上进行了搜索,但似乎没有找到必要的。谁能给我指出一个合适的插件或者建议一个自定义的解决方案?

提前致谢。

【问题讨论】:

    标签: jquery maskedinput


    【解决方案1】:

    尝试以下任何一种:

    http://plugins.jquery.com/tag/currency/

    这些也可能包含您要查找的内容:

    http://plugins.jquery.com/tag/mask/

    【讨论】:

    【解决方案2】:

    我使用以下代码来存档货币格式,而无需使用其他插件:

    $('input.money-bank').on('keydown',function(e){    
        // tab, esc, enter
        if ($.inArray(e.keyCode, [9, 27, 13]) !== -1 ||
            // Ctrl+A
            (e.keyCode == 65 && e.ctrlKey === true) || 
            // home, end, left, right, down, up
            (e.keyCode >= 35 && e.keyCode <= 40)) {
            return;
        }
    
        e.preventDefault();
    
        // backspace & del
        if($.inArray(e.keyCode,[8,46]) !== -1){
            $(this).val('');
            return;
        }
    
        var a = ["a","b","c","d","e","f","g","h","i","`"];
        var n = ["1","2","3","4","5","6","7","8","9","0"];
    
        var value = $(this).val();
        var clean = value.replace(/\./g,'').replace(/,/g,'').replace(/^0+/, '');   
    
        var charCode = String.fromCharCode(e.keyCode);
        var p = $.inArray(charCode,a);
    
        if(p !== -1)
        {
            value = clean + n[p];
    
            if(value.length == 2) value = '0' + value;
            if(value.length == 1) value = '00' + value;
    
            var formatted = '';
            for(var i=0;i<value.length;i++)
            {
                var sep = '';
                if(i == 2) sep = ',';
                if(i > 3 && (i+1) % 3 == 0) sep = '.';
                formatted = value.substring(value.length-1-i,value.length-i) + sep + formatted;
            }
    
            $(this).val(formatted);
        }    
    
        return;
    
    });
    

    JSFiddle: https://jsfiddle.net/gt2Ly5rt/6/

    使用此脚本,用户将只输入数字,脚本将自动放置小数和千位分隔符(它被硬编码为 BRL 格式,但您可以自定义它)。

    例如,如果用户键入:

    • “1”,会显示:“0,01”
    • “12”,会显示:“0,12”
    • “123”,会显示:“1,23”
    • “123456”,会显示:“1.234,56”

    希望对某人有所帮助。

    【讨论】:

    • 非常适合我。谢谢!
    【解决方案3】:

    仅使用 Javascript 的简单解决方案。

    String.prototype.reverse = function () {
            return this.split("").reverse().join("");
        }
    
        function reformatText(input) {        
            var x = input.value;
            x = x.replace(/,/g, ""); // Strip out all commas
            x = x.reverse();
            x = x.replace(/.../g, function (e) {
                return e + ",";
            }); // Insert new commas
            x = x.reverse();
            x = x.replace(/^,/, ""); // Remove leading comma
            input.value = x;
        }
    .currencyinput {
      border-color: #98969a;
        border-style: solid;
        border-width: 0.5px;
        display: inline-block;
    }
      
    
    .currencyinput input {   
        border-style: solid solid solid none;
        border-width: 0 0 0 thin;
    }
    &lt;span class="currencyinput"&gt;$&lt;input type="text" onkeyup="reformatText(this)" name="currency"&gt;&lt;/span&gt;

    【讨论】:

    • 1234.5678 结果为 1,234,.567,8 但应该是 1,234.5678
    【解决方案4】:

    我在我的生产站点中使用了这个 (http://code.google.com/p/jquery-formatcurrency/) 并且没有任何问题,并且 api 很简单。

    【讨论】:

      猜你喜欢
      • 2015-06-16
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多