MaxLength for bootstrap-vue 输入数字Vue.js
MaxLength for bootstrap-vue input number Vue.js
我尝试为来自 bootstrap-vue
的输入实现 maxLength
,但从我从他们的文档中读到的内容来看,他们不支持最大。如果我删除 type="number"
,它可以工作,但不再是一个数字。
<b-form-input
size="sm"
v-model="register_volume_first"
type="number"
maxlength=4
placeholder="1902"
></b-form-input>
maxLength 只针对文本类型,我试了一下是否支持 min 和 max 好像是这样,请看一下:
new Vue({
el: '#app',
methods: {
onSubmit(evt) {
evt.preventDefault()
console.log(evt)
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>
<div id="app">
<b-form @submit="onSubmit">
<b-form-input type="number" max="20" min="10"><min="10" required></b-form-input>
<b-button type="submit" variant="primary">Submit</b-button>
</b-form>
</div>
请记住,最小值和最大值的检查是在提交表单时完成的,当然还有必需的参数。
编辑:添加表单并提交到代码段
编辑 2:
没有表单提交
new Vue({
el: '#app',
methods: {
onSubmit(evt) {
evt.preventDefault()
console.log(evt)
}
},
data() {
return{
inputValue: 15
}
},
watch: {
inputValue(val){
if(val < 10)
this.inputValue = 10;
else if(val > 20)
this.inputValue = 20;
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>
<div id="app">
<b-form-input v-model="inputValue" type="number" max="20" min="10" required></b-form-input>
</div>
尝试使用formatter
道具如下:
<template>
<div>
<b-form-input size="sm" v-model="volume" type="number" :formatter="formatYear" placeholder="1902"></b-form-input>
<div class="mt-2">Value: {{ volume }}</div>
</div>
</template>
<script>
export default {
data() {
return {
volume: '4'
}
},
methods:{
formatYear(e){
return String(e).substring(0,4);
}
}
}
</script>
我尝试为来自 bootstrap-vue
的输入实现 maxLength
,但从我从他们的文档中读到的内容来看,他们不支持最大。如果我删除 type="number"
,它可以工作,但不再是一个数字。
<b-form-input
size="sm"
v-model="register_volume_first"
type="number"
maxlength=4
placeholder="1902"
></b-form-input>
maxLength 只针对文本类型,我试了一下是否支持 min 和 max 好像是这样,请看一下:
new Vue({
el: '#app',
methods: {
onSubmit(evt) {
evt.preventDefault()
console.log(evt)
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>
<div id="app">
<b-form @submit="onSubmit">
<b-form-input type="number" max="20" min="10"><min="10" required></b-form-input>
<b-button type="submit" variant="primary">Submit</b-button>
</b-form>
</div>
请记住,最小值和最大值的检查是在提交表单时完成的,当然还有必需的参数。
编辑:添加表单并提交到代码段
编辑 2: 没有表单提交
new Vue({
el: '#app',
methods: {
onSubmit(evt) {
evt.preventDefault()
console.log(evt)
}
},
data() {
return{
inputValue: 15
}
},
watch: {
inputValue(val){
if(val < 10)
this.inputValue = 10;
else if(val > 20)
this.inputValue = 20;
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>
<div id="app">
<b-form-input v-model="inputValue" type="number" max="20" min="10" required></b-form-input>
</div>
尝试使用formatter
道具如下:
<template>
<div>
<b-form-input size="sm" v-model="volume" type="number" :formatter="formatYear" placeholder="1902"></b-form-input>
<div class="mt-2">Value: {{ volume }}</div>
</div>
</template>
<script>
export default {
data() {
return {
volume: '4'
}
},
methods:{
formatYear(e){
return String(e).substring(0,4);
}
}
}
</script>