input - Vue.Js 2 输入格式化数字

标签 input vuejs2 numbers format vue-component

我一直在努力获取数字输入以使用 vuejs2 格式化数字。

将一些 View 逻辑从 asp.net core 2 迁移到 vue,我正在使用它:

<input asp-for="Model.LoanAmount" value="@(Model.LoanAmount > 0 ? Model.LoanAmount.ToString("N2") : String.Empty)" >

但这需要我在输入更改时重新加载该 View 。

我需要一种方法来将数字输入格式化为美国格式和 2 位小数 (1,000,000.21),但当模型值为零或空时不显示任何内容。
vue-numeric 做几乎所有事情,但当我尝试使用占位符时对我来说失败了。

<vue-numeric v-model="vm.loanAmount" seperator="," placeholder=" " :precision="2" ></vue-numeric> 

我尝试使用空格作为占位符,因为当我使用空字符串时它会崩溃。 如果输入零或空,则此示例显示 0.00。我尝试使用 output-typeempty-value Prop 。

我不喜欢 vue-numeric 但它很方便,因为我不知道有更方便的解决方案。

最佳答案

您可以通过简单地使用具有单独的 gettersettercomputed 属性来实现格式化,而无需其他依赖项。

computed: {
  formattedValue: {
    get: function() {
      return this.value;
    },
    set: function(newValue) {
      if (newValue.length > 2) {
        newValue = newValue.replace(".", "");
        this.value =
          newValue.substr(0, newValue.length - 2) +
          "." +
          newValue.substr(newValue.length - 2);
      } else {
        this.value = newValue;
      }
    }
  }
}

https://codesandbox.io/s/p7j447k7wq

我只是作为示例添加了小数点分隔符,您必须在 setter 中添加 , 千位分隔符才能获得全部功能。

关于input - Vue.Js 2 输入格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53422585/

相关文章:

javascript - 将 var 添加在一起

c# - 使用 Unity 的新输入系统检测鼠标滚轮滚动输入

javascript - 类型错误 : Cannot read property '0' of undefined inside v-for

sql - 将数字转换为单词-第一,第二,第三等

C - 随机数生成器的问题

javascript - 检查所有输入是否为空

python - 使用 python 在 Mac 上监视全局键盘输入

javascript - 如何将 cytoscape 对象存储在 Vue.js 数据实例中?

javascript - 具有 vuedraggable 的 Vue typescript 类组件

java - 我需要帮助在 Java 中实现某种循环情况