MaxLength для bootstrap - vue входной номер Vue. js - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь реализовать maxLength для ввода от bootstrap-vue, но из того, что я прочитал из их документации, они не поддерживают макс. Если я удаляю type="number", он работает, но больше не является числом.

    <b-form-input
        size="sm"
        v-model="register_volume_first"
        type="number"
        maxlength=4
        placeholder="1902"
    ></b-form-input>

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Попробуйте использовать 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>
1 голос
/ 20 февраля 2020

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>
...