在淘汰赛中使用货币javascript

Working with currency in knockout & javascript

本文关键字:货币 javascript 淘汰赛      更新时间:2023-09-26

在我的应用程序中,我有一个表格,其中有一些字段的钱。我也有一些knockout的customBinding来处理输入并为插入的值添加正确的货币符号(例如:55 -> $55 | 55€)。

当货币符号必须在插入的值之后时,问题开始了。然后,如果有人插入一些值,然后单击退格到我的KO绑定错误的值。

我的货币是欧元。我将'123'插入到我的输入中,并将我的绑定更改为'123€'。然后我点击退格键,我在绑定中设置的值是123,而不是12€或12。所以我有问题要知道输出值应该是什么样子。

这个问题有解决办法吗?我想过处理退格键或与货币符号进行一些比较,但也许有人知道更好的解决方案?

可以使用扩展器

ko.extenders.currency = function(target, options) {
    var result = ko.computed({
        read: target, 
        write: function(newValue) {
            var current = target();
            if((''+newValue).indexOf(options.currencySymbol) == -1){
            if (options.position == 'left') {
                target(options.currencySymbol+newValue);
            } else {
                target(newValue+options.currencySymbol);
            }}
        }
    }).extend({ notify: 'always' });
    result(target());
    return result;
};
function AppViewModel(one, two) {
    this.myNumberOne = ko.observable(one).extend({ currency: { currencySymbol : '£', position : 'left'}});
    this.myNumberTwo = ko.observable(two).extend({ currency: { currencySymbol : '£', position : 'right'}});
}
ko.applyBindings(new AppViewModel(221.2234, 123.4525));

JSFiddle