// input 只允许输入整数
export const onlyNumber = (num) => {
let n = String(num)
const t = n.charAt(0)
// 先把非数字的都替换掉,除了数字和.
n = n.replace(/[^\d\\.]/g, '')
// 必须保证第一个为数字而不是.
n = n.replace(/^\./g, '')
// 必须保证第一个数字非0
n = n.replace(/^0(\d)/g, ($0, $1) => $1)
// 保证只有出现一个.而没有多个.
n = n.replace(/\.{2,}/g, '.')
// 保证.只出现一次,而不能出现两次以上
n = n.replace('.', '$#$').replace(/\./g, '').replace(
'$#$', '.')
// 如果第一位是负号,则允许添加
if (t === '-') {
n = '-' + n
}
return n
}
<template>
<input v-model.number="datanumber" :max="max" :min="min" @input="onlyInputNumber" @blur="onlyNumberBlur">
</template>
<script>
export default {
data () {
return {
max: 100,
min: 0,
datanumber: 10,
}
},
methods: {
onlyInputNumber (event) {
if (event.target.value === '') return
event.target.value = onlyNumber(event.target.value)
if (this.max !== '' && !isNaN(Number(this.max)) && (+event.target.value > +this.max)) {
event.target.value = this.max
}
if (this.min !== '' && !isNaN(Number(this.min)) && (+event.target.value < +this.min)) {
event.target.value = this.min
}
this.datanumber = event.target.value
},
onlyNumberBlur (event) {
if (isNaN(Number(event.target.value))) {
event.target.value = ''
this.datanumber = event.target.value
}
}
}
}
</script>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。