InputNumber 数字输入
用于金额、数量、比例等需要数值约束的输入场景。
基础用法
vue
<template>
<x-input-number v-model="value" :min="0" :max="100" />
<x-input-number :default-value="32" :min="0" :max="100" />
<x-input-number :default-value="500" disabled />
</template>
<script setup lang="ts">
import { ref } from 'vue';
const value = ref(12);
</script>按钮模式
vue
<template>
<x-input-number v-model="value" :min="0" :max="100" />
<x-input-number v-model="value" mode="button" :min="0" :max="100" />
</template>尺寸
vue
<template>
<x-input-number v-model="value" size="mini" />
<x-input-number v-model="value" size="small" />
<x-input-number v-model="value" size="medium" />
<x-input-number v-model="value" size="large" />
<x-input-number v-model="value" mode="button" size="large" />
</template>精度和步长
3.6
vue
<template>
<x-input-number v-model="value" :step="1.2" :precision="2" />
</template>格式化展示
12000
vue
<template>
<x-input-number
v-model="value"
:min="0"
:formatter="formatter"
:parser="parser"
/>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const value = ref(12000);
const formatter = (value: string) => {
const values = value.split('.');
values[0] = values[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return values.join('.');
};
const parser = (value: string) => value.replace(/,/g, '');
</script>前缀和后缀
vue
<template>
<x-input-number v-model="value" allow-clear>
<template #prefix>¥</template>
</x-input-number>
<x-input-number v-model="value" allow-clear hide-button>
<template #suffix>%</template>
</x-input-number>
<x-input-number v-model="value" mode="button">
<template #prepend>数量</template>
<template #append>件</template>
</x-input-number>
</template>自定义图标
vue
<template>
<x-input-number v-model="value" :min="0" :max="100">
<template #plus>+</template>
<template #minus>-</template>
</x-input-number>
</template>触发时机
15
vue
<template>
<x-input-number
v-model="value"
:min="10"
:max="100"
model-event="input"
/>
</template>状态
vue
<template>
<x-input-number :default-value="12" read-only />
<x-input-number :default-value="12" error />
<x-input-number :default-value="12" disabled />
</template>事件回调
等待操作
vue
<template>
<x-input-number
v-model="value"
allow-clear
@input="handleInput"
@change="handleChange"
@clear="handleClear"
/>
</template>方法
vue
<template>
<x-input-number ref="inputNumberRef" v-model="value" />
<x-button @click="inputNumberRef?.focus()">聚焦</x-button>
<x-button @click="inputNumberRef?.blur()">失焦</x-button>
</template>按需导入
ts
import { InputNumber } from 'x-next';Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
modelValue | 绑定值 | number | - |
defaultValue | 默认值,非受控模式 | number | - |
mode | 按钮模式 | 'embed' | 'button' | 'embed' |
precision | 数字精度 | number | - |
step | 数字变化步长 | number | 1 |
disabled | 是否禁用 | boolean | false |
error | 是否错误状态 | boolean | false |
max | 最大值 | number | Infinity |
min | 最小值 | number | -Infinity |
formatter | 展示值格式化 | (value: string) => string | - |
parser | 将展示值解析为数字字符串 | (value: string) => string | - |
placeholder | 占位提示 | string | - |
hideButton | 是否隐藏步进按钮 | boolean | false |
size | 输入框尺寸 | 'mini' | 'small' | 'medium' | 'large' | 跟随全局配置 |
allowClear | 是否允许清空 | boolean | false |
modelEvent | 触发 v-model 更新的事件 | 'change' | 'input' | 'change' |
readOnly | 是否只读 | boolean | false |
inputAttrs | 内部 input 元素属性 | object | - |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
update:modelValue | 值更新时触发 | value |
change | 值变化时触发 | value, event |
input | 输入时触发 | value, inputValue, event |
focus | 获取焦点时触发 | event |
blur | 失去焦点时触发 | event |
clear | 点击清除按钮时触发 | event |
keydown | 按下键盘时触发 | event |
Slots
| 插槽名 | 说明 |
|---|---|
prefix | 前缀内容 |
suffix | 后缀内容 |
prepend | 前置标签 |
append | 后置标签 |
plus | 自定义增加按钮图标 |
minus | 自定义减少按钮图标 |
Methods
| 方法 | 说明 |
|---|---|
focus | 使输入框获取焦点 |
blur | 使输入框失去焦点 |