javascript - Vue将input[type=number]转换为字符串值

标签 javascript vue.js

我遇到了这个问题,Vue 将数字类型的输入字段的值转换为字符串,我只是想不通为什么。我遵循的指南不会遇到此问题,并且会按预期获取数值作为数字。

Vue 文档声明,如果输入的类型是数字,Vue 会将值转换为数字。

代码源自一个组件,但我调整它以在 JSFiddle 中运行:https://jsfiddle.net/d5wLsnvp/3/

<template>
    <div class="col-sm-6 col-md-4">
        <div class="panel panel-success">
            <div class="panel-heading">
                <h3 class="panel-title">
                    {{ stock.name }}
                    <small>(Price: {{ stock.price }})</small>
                </h3>
            </div>
            <div class="panel-body">
                <div class="pull-left">
                    <input type="number" class="form-control" placeholder="Quantity" v-model="quantity"/>
                </div>
                <div class="pull-right">
                    <button class="btn btn-success" @click="buyStock">Buy</button>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        props: ['stock'],
        data() {
            return {
                quantity: 0 // Init with 0 stays a number
            };
        },
        methods: {
            buyStock() {
                const order = {
                    stockId: this.stock.id,
                    stockPrice: this.stock.price,
                    quantity: this.quantity
                };
                console.log(order);
                this.quantity = 0; // Reset to 0 is a number
            }
        }
    }
</script>

数量值(value)是个问题。 它初始化为 0,当我按下“购买”按钮时,控制台显示:

Object { stockId: 1, stockPrice: 110, quantity: 0 }

但是,只要我使用微调器或仅输入新值来更改值,控制台就会显示:

Object { stockId: 1, stockPrice: 110, quantity: "1" }

已使用 Firefox 59.0.2 和 Chrome 65.0.3325.181 进行测试。两者都表示它们是最新的。我实际上也在 Microsoft Edge 中尝试过,结果相同。

那么我在这里缺少什么?为什么 Vue 不将值转换为数字?

最佳答案

您需要使用 .number modifier for v-model ,像这样:

<input v-model.number="quantity" type="number">

注意:空字符串('')不会转为数字,可能需要单独处理。

关于javascript - Vue将input[type=number]转换为字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49748596/

相关文章:

javascript - jQuery在计算窗口高度后将div放置在特定位置

javascript - 我可以从 watch 调用方法并安装吗?

vue.js - 如果数据尚未持久化到 Vuex,则在兄弟组件之间共享数据?

php - Ajax PHP 未向我提供任何响应文本

javascript - 如何检查自定义协议(protocol)是否受支持

javascript - 单击时获取内容的innerHTML

javascript - 为什么 string.split() 对于正则表达式的行为不同?

javascript - 如何在 vue javascript 中引用静态资源

javascript - vue.js:带有自托管(本地)视频文件的英雄背景视频

vue.js - vuejs 2 如何在使用参数时从 vuex 中观察存储值