Skip to content

数字输入框 InputNumber

仅允许输入数字格式的输入框。

基本用法

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


代码事例
vue
<template>
  <fk-space direction="vertical" size="large">
    <fk-input-number v-model="value" :style="{width:'320px'}" allow-clear placeholder="Please Enter" class="input-demo" :min="0" :max="100" @clear="handleClear"/>
    <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" class="input-demo" :min="10" :max="100"/>
    <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" :default-value="500" class="input-demo" disabled/>
  </fk-space>
</template>

<script setup>
import { nextTick, ref } from 'vue';
const value = ref(15);

const handleClear = () => {
  nextTick(() => {
    value.value = 0; 
    console.log('clear')
  })
}

</script>

按钮模式

指定 modebutton 来使用带按钮的数字输入框。


代码事例
vue
<template>
  <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" :default-value="500" mode="button" class="input-demo" />
</template>

四种尺寸

设置 size 可以使用四种尺寸(mini, small, medium, large)的数字输入框。高度分别对应24px28px32px36px


代码事例
vue
<template>
  <fk-space direction="vertical" size="large">
    <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" size="large" class="input-demo" />
    <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" mode="button" size="large" class="input-demo" />
  </fk-space>
</template>

精度和步长

通过 precision 来设置数字精度。当 precision 小于 step 的小数位时,精度取 step 的小数个数。


代码事例
vue
<template>
  <fk-space direction="vertical" size="large">
    <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" :default-value="3.6" :step="1.2" :precision="2" class="input-demo" />
    <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" :default-value="1.22" :step="1.22" :precision="1" class="input-demo" />
  </fk-space>
</template>

前缀与后缀

通过指定 prefixsuffix 插槽来在输入框内添加前缀和后缀。


代码事例
vue
<template>
  <fk-space direction="vertical" size="large">
    <fk-input-number :style="{width:'320px'}" placeholder="商品衣诚" allow-clear>
      <template #prefix>
        <icon-user />
      </template>
    </fk-input-number>
    <fk-input-number :style="{width:'320px'}" placeholder="商品衣诚" allow-clear hide-button>
      <template #suffix>
        <icon-info-circle />
      </template>
    </fk-input-number>
  </fk-space>
</template>

自定义图标

通过指定 plusminus 插槽来修改数值增减操作的图标。


代码事例
vue
<template>
  <fk-space direction="vertical" size="large">
    <fk-input-number :style="{width:'320px'}" placeholder="商品衣诚" allow-clear>
       <template #plus>
        <icon-plus />
      </template>
      <template #minus>
        <icon-minus />
      </template>
    </fk-input-number>
  </fk-space>
</template>

格式化展示值

通过 formatterparser 配合使用可以定义输入框展示值。


代码事例
vue
<template>
  <fk-input-number :style="{width:'320px'}" placeholder="Please Enter" class="input-demo" :default-value="12000" :min="0" :formatter="formatter" :parser="parser"/>
</template>

<script>
export default {
  setup(){
    const formatter = (value) => {
      const values = value.split('.');
      values[0]=values[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');

      return values.join('.')
    };

    const parser = (value) => {
      return value.replace(/,/g, '')
    };

    return {
      formatter,
      parser
    }
  },
}
</script>

v-model 的触发事件

数字输入框默认在 blur 或者按下 Enter 时会修改绑定的值,通过设置属性 model-event="input" 让组件在输入时修改绑定的值。 注意:在此模式下,输入时的值会超出设置的 min/max,组件会在失焦时修正值的大小。


代码事例
vue
<template>
  <fk-input-number v-model="value" :style="{width:'320px'}" placeholder="Please Enter" class="input-demo" :min="10" :max="100" model-event="input"/>
  <div>value: {{value}}</div>
</template>

<script>
export default {
  data(){
    return {
      value:15
    }

  }
}
</script>

API

<input-number> Props

参数名描述类型默认值版本
model-value (v-model)绑定值number|string-
default-value默认值(非受控模式)number-
mode模式(embed:按钮内嵌模式,button:左右按钮模式)'embed' | 'button''embed'
precision数字精度number-
step数字变化步长number1
disabled是否禁用booleanfalse
error是否为错误状态booleanfalse
max最大值numberNumber.POSITIVE_INFINITY
min最小值numberNumber.NEGATIVE_INFINITY
formatter定义输入框展示值func-
parserformatter 转换为数字,和 formatter 搭配使用func-
placeholder输入框提示文字string-
hide-button是否隐藏按钮booleanfalse
size输入框大小'mini' | 'small' | 'medium' | 'large''medium'
allow-clear是否允许清空输入框booleanfalse
model-event触发 v-model 的事件'change' | 'input''change'
read-only只读booleanfalse1.0.0
input-attrs内部 input 元素的属性object-1.0.0

<input-number> Events

事件名描述参数版本
change值发生改变时触发value: number | undefined
ev: Event
focus输入框获取焦点时触发ev: FocusEvent
blur输入框失去焦点时触发ev: FocusEvent
clear用户点击清除按钮时触发ev: Event1.0.0
input输入时触发value: number | undefined
inputValue: string
ev: Event
1.0.0
keydown按下键盘时触发ev: MouseEvent1.0.0

<input-number> Methods

方法名描述参数返回值
focus使输入框获取焦点--
blur使输入框失去焦点--

<input-number> Slots

插槽名描述参数
minus数值减少图标-
plus数值增加图标-
append后置标签-
prepend前置标签-
suffix后缀-
prefix前缀-

基于 MIT 许可发布