value数字 vue_Vue第一个自定义组件:数字输入框(number-input)

这个博客详细介绍了如何使用Vue.js创建一个带有增减功能的数值输入框组件。该组件接受最大值、最小值、初始值和步长等属性,并在用户输入超出范围时进行校正。同时,它监听并响应输入值的变化,通过`$emit`传递更新的值给父组件。此外,还实现了键盘上下键的加减功能,确保输入的数值始终在设定范围内。
摘要由CSDN通过智能技术生成

Vue.component('number-input',{//定义来自父级的参数

props:{

max:{

type:Number,default:Infinity

},

min:{

type:Number,default:-Infinity

},

value:{

type:Number,default:0},

step:{

type:Number,default:1}

},

template:'\

\

\

ADD \

Reduce \

',

data:function(){//Vue组件是单向数据流,无法直接修改prop中的值

var currentValue = 0;if(this.value > this.max){

currentValue= this.max ;

}else if(this.value < this.min){

currentValue= this.min ;

}else{

currentValue= this.value ;

}return{

currentValue :currentValue

}

},

methods:{

handleChange:function(event){var val =event.target.value.trim() ;if(isValueNumber(val)){var max = this.max ;var min = this.min ;

val=Number(val);this.currentValue =val ;if(val>max) this.currentValue =max ;if(val

}else{//如果输入的非数字,则保留之前的数据

event.target.value = this.currentValue ;

}

},//绑定键盘事件

handleKeydown:function(event){if(event.keyCode==38){this.handleAdd();

}if(event.keyCode==40){this.handleReduce() ;

}

},

handleAdd:function(){if(this.currentValue>=this.max) return;this.currentValue += this.step ;

},handleReduce:function(){if(this.currentValue<=this.min) return;this.currentValue -= this.step;

},

updateVal:function(val){if(val>this.max) val = this.max ;if(val

}

},

watch:{//增加监听

currentValue:function(val){this.$emit('input',val);this.$emit('on-change',val);

},

value:function(val){this.updateVal(val);

}

}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值