vuejs输入witdh掩码新钱

Posted

技术标签:

【中文标题】vuejs输入witdh掩码新钱【英文标题】:vuejs input witdh mask new money 【发布时间】:2021-10-23 05:46:54 【问题描述】:

我是 vuejs 的新手,坦率地说我找不到我想做的事情。当我找到它时,它对我不起作用。

我有一个输入,我希望在这个输入中输入的值写入“MONEY”的值,但我无法成功。

示例: 当 1000 写入输入时,当输入退出时 我要写 1,000,00。

"vue": "^2.6.12",

Person.vue

<CurrencyInput v-bind:model-value="value" :options=" currency: 'EUR' " />
<CurrencyInput :model-value="value" :options=" currency: 'EUR' " />
<CurrencyInput v-model="value" :options=" currency: 'EUR' "/>
<CurrencyInput :value="value" :options=" currency: 'EUR' "/>

<script>
import CurrencyInput from "../tools/CurrencyInput";

export default 
    components: 
        CurrencyInput
    ,
    data() 
        return 
            value: 123456,

,

</script>

工具/CurrencyInput.Vue

<template>
    <input ref="inputRef" :value="formattedValue" />
</template>

<script>
import useCurrencyInput from "vue-currency-input";

export default 
    name: "CurrencyInput",
    props: 
        modelValue: Number,
        options: Object,
    ,
    setup(props) 
        const  formattedValue, inputRef  = useCurrencyInput(props.options);

        return  inputRef, formattedValue ;
    ,
;
</script>

【问题讨论】:

看看npmjs.com/package/vue-currency-input,它有很多选项,在保持良好用户体验的同时进行掩蔽并不是简单的几行 它不能做我想做的事。我在问题中添加了我想要做的图像。 删除逗号后的零对我来说是个问题 例子:100,00 她改正结果是 100 如果您使用正确的选项,则不会:imgur.com/a/vlY5Qx2 【参考方案1】:

- 要求-

实现这一点(没有依赖关系)的最简单方法是远离v-model,而是参考以下手动事件:

@input @focus @blur

并通过更静态的:value="value" 方法绑定值本身。这样我们就可以更好地控制输出,而不会受到 vue-magic 的干扰

- 进程-

    最初,您希望输入类型为 "text",因为您希望显示货币的点/逗号符号。 在焦点上,您希望将类型更改为数字并删除逗号/点符号。 在模糊时您想切换回初始显示样式。这是通过使用Intl.NumberFormat 实现的。 在输入时您希望将新值保存到数字参考中。

- 代码沙盒 -

> Here you can see the concept in action <

【讨论】:

【参考方案2】:

将vue-currency-input 与以下选项一起使用:


    locale: 'nl-NL',
    currency: 'GBP',
    currencyDisplay: 'hidden',
    precision: 2,
    hideCurrencySymbolOnFocus: true,
    hideGroupingSeparatorOnFocus: true,
    hideNegligibleDecimalDigitsOnFocus: true,
    autoDecimalDigits: false,
    exportValueAsInteger: false,
    autoSign: false,
    useGrouping: true

输入将被屏蔽如下:

查看docs 和playground 了解更多选项。

【讨论】:

那么,我不能把它写在组件中而不是绑定吗? 不确定您的意思,我已链接到有关如何使用它的文档,那里有一个使用自定义组件的示例dm4t2.github.io/vue-currency-input/… 我使用的和这里一样,但是我想定义“props options”而不是````:options=" currency: 'GBP' " ```。 link 传递道具:options="options", codesandbox.io/s/… 我不想这样做,而是要制作主要组件选项。 "CurrencyInput.vue"

以上是关于vuejs输入witdh掩码新钱的主要内容,如果未能解决你的问题,请参考以下文章

使用掩码实现输入

Ubuntu16.04如何输入ip地址,子网掩码,网关等进行联网?

几小时和几分钟的 jQuery 输入掩码

如何使用十六进制字符限制输入掩码范围

jquery根据值长度更改输入掩码模板

2 位小数输入掩码