Skip to content
通用组件

数字输入InputNumber

常显 − / + 的步进器:等级、信赖、材料数量。方向键步进,Home / End 到上下限。

Vue
实验import { AkInputNumber } from "@mooncellwiki/prts-design-vue"Storybook ↗源码 ↗

常显 − / + 的步进器(同 Naive UI 的 n-input-number):等级、信赖、潜能、材料数量这类有上下限的整数。裸 <input type="number"> 的原生 ▲▼ 只在悬停 / 聚焦时出现(Chrome),要一直看得见按钮用它。输入框定宽 56px、数字等宽(改值不跳动)。

上下限 · 步长 ​

v-model 是数字(清空后是 null)。打字时是合法数字且在范围内就实时更新,否则等失焦 / 回车再落到范围内(超了收到上下限,不是数字退回原值);到上下限时对应的按钮变灰。

状态 ​

:show-button="false" 只留输入框;readonly 能看能复制不能改(按钮一并锁住);disabled;placeholder 给「清空 = 不限」这类语义。

键盘 ​

输入框是 role="spinbutton"(aria-valuenow / aria-valuemin / aria-valuemax),按 WAI-ARIA Spinbutton:

键行为
↑ / ↓加 / 减一步
PageUp / PageDown加 / 减十步
Home / End到下限 / 上限(设了才接管,否则照常移动光标)
Enter确认输入

− / + 按钮不进 Tab 顺序(tabindex="-1",键盘用方向键),但有读屏名「减少」/「增加」,触屏读屏照样能点。整数且下限 ≥ 0 时手机弹数字键盘(inputmode="numeric"),否则 decimal。

Vue API ​

属性类型默认说明
minnumber—最小值
maxnumber—最大值
stepnumber1步长:按钮 / 方向键每次加减多少
disabledbooleanfalse禁用
readonlybooleanfalse只读:值能看能复制,不能改
placeholderstring—清空时的占位提示
showButtonbooleantrue显示 − / + 按钮(同 Naive 的 show-button)
labelstring—可访问名(aria-label):不在 AkField 里、旁边也没有 <label> 时必填
modelValuenumber | null—当前值;输入框清空后是 null
事件参数说明
update:modelValue[value: number | null | undefined]

CSS 实现 ​

html
<div class="ak-number"><button type="button" tabindex="-1" aria-label="减少">−</button><input value="12" role="spinbutton"><button type="button" tabindex="-1" aria-label="增加">+</button></div>
块元素 __修饰 --

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有