javascript - Vue.js 将值显示为价格,但将其保留为 int

标签 javascript focus vue.js

我有一个名为“formatted-number”的 vue 组件,它接收一个 int 值(1234)并将其当前更改为字符串(“12.34”),以便它显示为价格(带有“,”或“.”,具体取决于国家/地区)在文本字段中。

我想将该值保留为 int 并仅将其显示为价格,以便我们的用户可以编辑“字符串价格”,但它也会在后台更新 int 值。

有人知道我该如何处理这个问题吗?

这是当前代码:

Vue.component('formattedNumber', {
    props: ['value', 'abs'],
    template: '<input type="text" :value="value" autocomplete="off" @blur="updateNumber($event.target.value)" ref="input">',
    mounted: function () {
        this.updateNumber(this.value / 100);
    },
    methods: {
        separators: function () {
            var comparer = new Intl.NumberFormat(navigator.language).format(10000 / 3);

            return {
                thousandSeparator: comparer[1],
                decimalSeparator: comparer[5]
            };
        },
        unformat: function (number) {
            var separators = this.separators();

            var result = number
                .toLocaleString(navigator.language)
                .replace(separators.thousandSeparator, '')
                .replace(/[^\d.,-]/g, '')
                .replace(separators.decimalSeparator, '.');

            return this.abs ? Math.abs(Number(result)) : this.Number(result);
        },
        updateNumber: function (value) {
            this.$emit('input', new Intl.NumberFormat(
                navigator.language,
                {minimumFractionDigits: 2, maximumFractionDigits: 2}).format(this.unformat(value)
            ));
        }
    }
});

最佳答案

创建过滤器:docs .

过滤器仅更改 html 输出并保持值不变。

关于javascript - Vue.js 将值显示为价格,但将其保留为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43545616/

相关文章:

javascript - 禁用页面外的焦点

javascript - vue数据函数语法

javascript - IE11 上 Vue 的替代语法

javascript - JavaScript函数来处理无法在$(window).resize()上使用的CSS自定义属性

javascript - javascript 运行后 html javascript 恢复为默认值

c# - 数据网格中的焦点问题

java - 在Java中,如何在切换到新的JTab之前捕获事件?

javascript - 如何对 li 进行反向排序

javascript - 单击参数中的按钮时如何获取包含对象的选定单选按钮值

asp.net - 在 ASP.NET 中哪里注册 RegisterClientScriptBlock?