数字输入框

通过鼠标或键盘,输入范围内的数值。

何时使用

当需要获取标准数值时。

代码演示

InputNumber 数字输入框 - 图1

基本

数字输入框。

  1. <template>
  2. <div>
  3. <a-input-number id="inputNumber" :min="1" :max="10" v-model="value" @change="onChange" />
  4. 当前值:{{value}}
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. data() {
  10. return {
  11. value: 3,
  12. };
  13. },
  14. methods: {
  15. onChange(value) {
  16. console.log('changed', value);
  17. },
  18. },
  19. };
  20. </script>

InputNumber 数字输入框 - 图2

三种大小

三种大小的数字输入框,当 size 分别为 largesmall 时,输入框高度为 40px24px ,默认高度为 32px

<template>
  <div>
    <a-input-number size="large" :min="1" :max="100000" :defaultValue="3" @change="onChange" />
    <a-input-number :min="1" :max="100000" :defaultValue="3" @change="onChange" />
    <a-input-number size="small" :min="1" :max="100000" :defaultValue="3" @change="onChange" />
  </div>
</template>
<script>
  export default {
    methods: {
      onChange(value) {
        console.log('changed', value);
      },
    },
  };
</script>
<style scoped>
  .ant-input-number {
    margin-right: 10px;
  }
</style>

InputNumber 数字输入框 - 图3

不可用

点击按钮切换可用状态。

<template>
  <div>
    <a-input-number :min="1" :max="10" :disabled="disabled" :defaultValue="3" />
    <div style="marginTop:20px">
      <a-button @click="toggle" type="primary">Toggle disabled</a-button>
    </div>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        disabled: true,
      };
    },
    methods: {
      toggle() {
        this.disabled = !this.disabled;
      },
    },
  };
</script>

InputNumber 数字输入框 - 图4

小数

和原生的数字输入框一样,value 的精度由 step 的小数位数决定。

<template>
  <a-input-number :min="0" :max="10" :step="0.1" @change="onChange" />
</template>
<script>
  export default {
    methods: {
      onChange(value) {
        console.log('changed', value);
      },
    },
  };
</script>

InputNumber 数字输入框 - 图5

格式化展示

通过 formatter 格式化数字,以展示具有具体含义的数据,往往需要配合 parser 一起使用。

<template>
  <div>
    <a-input-number
      :defaultValue="1000"
      :formatter="value => `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
      :parser="value => value.replace(/\$\s?|(,*)/g, '')"
      @change="onChange"
    />
    <a-input-number
      :defaultValue="100"
      :min="0"
      :max="100"
      :formatter="value => `${value}%`"
      :parser="value => value.replace('%', '')"
      @change="onChange"
    />
  </div>
</template>
<script>
  export default {
    methods: {
      onChange(value) {
        console.log('changed', value);
      },
    },
  };
</script>

API

属性如下

成员说明类型默认值
autoFocus自动获取焦点booleanfalse
defaultValue初始值number
disabled禁用booleanfalse
formatter指定输入框展示值的格式function(value: number | string): string-
max最大值numberInfinity
min最小值number-Infinity
parser指定从 formatter 里转换回数字的方式,和 formatter 搭配使用function( string): number-
precision数值精度number-
decimalSeparator小数点string-
size输入框大小string
step每次改变步数,可以为小数number|string1
value(v-model)当前值number

事件

事件名称说明回调参数
change变化回调Function(value: number | string)

方法

名称描述
blur()移除焦点
focus()获取焦点