【问题标题】:Automatically add comma in type=number vue在 type=number vue 中自动添加逗号
【发布时间】:2018-10-02 23:40:48
【问题描述】:

有什么方法可以在 vue js 的 input type="number" 字段中自动添加逗号?这是我在 Microsoft 中自动更改 IME 选项并禁止用户输入日文字符的唯一方法。

<ui-textbox label="initial" v-model="initial_cost"
    name="initial_cost"
    v-validate="`numeric|decimal`"
    type="number"
    v-on:keydown="isNumber"
    :maxlength = "18"
    :enforceMaxlength="true"
    value = 0.00
    format="number"
></ui-textbox>

isNumber: function(evt) {            
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        var charval= String.fromCharCode(evt.keyCode);
        console.log(typeof evt);
        if((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <= 105) || charCode == 8 || charCode == 46 ||
        charCode ==36 || charCode ==35){                
            return true;
        }else{
            return false;
        }

所以如果我用户输入1000,则显示为1,0001000010,000 等等。我已经看到类似这个问题的解决方案here 但似乎他正在使用input type="text" 字段?有什么办法可以将它应用到我在 vue 中的 type="number" 字段?

【问题讨论】:

  • 并非所有浏览器都支持。您需要输入type=text,然后验证javascript中的数字恐怕。请检查这个帖子。 stackoverflow.com/questions/35315157/…。此外,在 w3 规范中,他们明确指出这取决于用户代理。 w3.org/TR/html50/forms.html#number-state-%28type=number%29
  • 类型 number 中只允许使用数字和小数点,正如@kavindra 所说,这取决于用户代理,到目前为止,还没有主流浏览器这样做。
  • 您是否尝试将那个答案与type="number" 一起使用,但没有奏效?
  • @Taki 是的,我已经尝试过了,但未能成功。
  • @Kavindra 我目前有 type= text,但我的问题是如果用户使用日文键盘,我的验证失败。你可以在这里查看我的担忧:stackoverflow.com/questions/49937171/…

标签: javascript vue.js


【解决方案1】:

正如上面评论部分所讨论的,不可能在type="number" 的输入中添加逗号。只有在输入type="text" 时才能显示逗号。

您可以将输入类型 number 设置为焦点,将 text 设置为模糊,这样用户就不能输入任何不是数字的内容,并且在用户完成输入后可以显示逗号。

在名为inputType的数据中添加一个新的反应变量

  data() {
    return {
      inputType: "text"
    };
  }

在 ui-textbox 中更改/添加一些属性

<ui-textbox /*...*/ :type="inputType" @focus="inputType='number'" @blur="inputType='text'">
    <!-- ... -->
</ui-textbox>

这将使type 属性动态化。在焦点上输入number,在模糊上输入text

【讨论】:

  • 最后一件事 v-on:keydown="isNumber|maxlength=18" 做得不好。这就是你在上面评论部分的意思,我应该执行maxLength 吗?因为如果我这样做,我的isNumber 验证将不起作用。
  • 非常感谢Jacob从第一期到这里一直帮助我:)但是为什么我不能删除一个号码?
  • @ramedju 哦,对,我的错。我添加了一个条件if(isNaN(evt.key)) return;,仅当按键来自数字时才检查长度。 codepen.io/jacobgoh101/pen/RyWOJG?editors=1011
  • 非常感谢。你真的救了我:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
相关资源
最近更新 更多