console
Vue.component("input-number", {
template: "<div class='input-number'> <input type='text' :value='value' @change='handleChange'></div>",
props: {
max:0,
min: 0,
value:0
},
methods: {
handleChange: function (event) {
console.log('input 的change事件')
var max = this.max;
var min = this.min;
var val = event.target.value.trim()
console.log("获取到的数据val:" + val)
if (isRealNum(val)) {
console.log("获取到的input输入是一个number")
val = Number(val)
newValue = val;
if (val > max) {
console.log("输入的数值为:" + val + " 大于最大值max:" + max)
newValue = max;
} else if (val < min) {
console.log("输入的数值为:" + val + " 小于最小值min:" + min)
newValue = min
}
this.$emit('input', newValue)
console.log(this)
console.log(event.target.value)
} else {
console.log("获取到的input输入不是一个number")
event.target.value = this.value;
}
}
}
})
function isRealNum(val) {
if (val === "" || val == null) {
return false;
}
if (!isNaN(val)) {
return true;
}
else {
return false;
}
}
var app = new Vue({
el: "#app",
data: {
appValue: 50
}
})
<div id="app">
<input-number v-model="appValue" :max="10" :min="0"></input-number>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>