uni-app input type=number 负号不触发input事件
uni-app input type=number 负号不触发input事件
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.5.2 | HBuilderX |
示例代码:
<input type="number" [@input](/user/input)="onInput" v-model="meter"/>
onInput(event) {
// 输入负号,不能触发这个方法
},
4 回复
android,H5 负号都不触发
ios键盘没有负号
更多关于uni-app input type=number 负号不触发input事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
因为仅有-不是number
得加上数值才构成number
什么是input,就是不管我输入什么,都得给我回馈。组件直接给我处理了,那叫input事件嘛?
在 uni-app 中,input 元素设置 type="number" 时,输入负号(-)确实可能不会立即触发 input 事件。这是因为浏览器的数字输入框在处理负号时,通常需要先输入数字,负号才会被识别为有效输入(例如输入“-5”)。如果只输入“-”,输入框的值可能为空或无效,因此不会触发事件。
解决方案:
- 使用
type="text"并添加数字验证:将type改为text,通过[@input](/user/input)事件用正则表达式过滤非数字和负号字符,确保输入内容为数字(包括负数)。例如:<input type="text" [@input](/user/input)="onInput" v-model="meter" />onInput(event) { // 只允许数字和负号,且负号只能在开头 let value = event.detail.value; value = value.replace(/[^0-9-]/g, ''); if (value.indexOf('-') > 0) { value = value.replace(/-/g, ''); } this.meter = value; } - 结合
[@keypress](/user/keypress)事件:监听键盘输入,在输入负号时手动处理。例如:<input type="number" [@keypress](/user/keypress)="onKeyPress" [@input](/user/input)="onInput" v-model="meter" />onKeyPress(event) { if (event.key === '-') { // 手动触发处理逻辑 this.handleNegativeInput(); } } - 使用
watch监听数据变化:通过watch监听meter的值变化,即使input事件未触发,也能捕获数据更新。例如:watch: { meter(newVal) { console.log('值变化:', newVal); } }

