- 46
- 0
实现效果: 当input获取焦点时,点击按钮'+'和'上键',按钮'-'和'下键'分别使input里的数字+1和-1
出现效果: 鼠标点击'-'再按'下键'数字才减,鼠标点击'+'再按'上键'数字才加
父组件:
<div id="app">
<input-number v-model="value" :max="10" :min="0"></input-number>
</div>
子组件:
Vue.component('input-number', {
template:'\
<div class="input-number">\
<input type="text"\
:value="currentValue"\
@change="handleChange"\
v-focus="focus">\
<button\
@click.keyup.down="handleDown"\
:disabled="currentValue <= min">-</button>\
<button\
@click.keyup.up="handleUp"\
:disabled="currentValue >= max">+</button>\
</div>',
props: {
max: {
type: Number,
default: Infinity
},
min: {
type: Number,
default: -Infinity
},
value: {
type: Number,
default: 0
}
},
data: function () {
return {
currentValue: this.value
}
},
watch: {
currentValue: function (val) {
this.$emit('input', val);
this.$emit('on-change', val);
},
value: function (val) {
this.updateValue(val);
}
},
methods: {
handleDown: function () {
console.log('下键')
// if (this.currentValue <= this.min) return;
// this.currentValue -= 1;
},
handleUp: function () {
console.log('上键')
// if (this.currentValue >= this.max) return;
// this.currentValue += 1;
},
updateValue: function (val) {
if (val > this.max) val = this.max;
if (val < this.min) val = this.min;
this.currentValue = val;
},
handleChange: function (event) {
var val = event.target.value.trim();
var max = this.max;
var min = this.min;
if (isValueNumber(val)) {
val = Number(val);
this.currentValue = val;
if (val > max) {
this.currentValue = max;
} else if(val < min) {
this.currnetValue = min;
}
} else {
event.target.value = this.currentValue;
}
}
},
mounted: function () {
this.updateValue(this.value);
}
必须要自定义指令吗?通过操作具体元素才能实现吗?
怎么实现求大神帮助!!!
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
王者荣耀名字男 普通会员 1楼
在Vue中,你可以使用自定义指令和input事件来获取焦点并触发按钮键盘事件。以下是一个简单的例子:
```html
```
在这个例子中,我们创建了一个自定义指令
v-model,它用于监听input元素的值。当input元素的值发生变化时,v-model会自动更新input元素的值。我们还定义了一个名为handleClick的方法,它会在点击按钮时被调用。然后,我们在模板中使用
v-model和@input指令来监听input元素的值,并在输入框中添加了一个按钮。当input框的值发生变化时,handleClick方法会被调用,这将触发按钮的键盘事件。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

