javascriptvue.js

How to limit digit number in vue input?


My goal is to limit the number of digit user can enter in the input field. So a user can only input 10 digits. I tried min and max still doesn't work

Here's the code

        <input
          v-model="amount"
          type="number"
        >


        <script>
             export default {
                  data() {
                      return { 
                          amount: 7800
                      }
                   }

              }

        </script>

Right now i can add more than 10 digits


Solution

  • We can control the value of <input> manually:

     <input
      type="number"
      :value="amount"
      @input="updateValue"
    />
    

    and check in updateValue method:

      data() {
        return {
          amount: 7800
        }
      },
      methods: {
        updateValue(event) {
          const value = event.target.value
          console.log(value, this.amount)
          if (String(value).length <= 10) {
            this.amount = value
          }
          this.$forceUpdate()
        }
      }
    

    Note that this.$forceUpdate() is used to make component re-render when user input more than 10 characters.

    Demo on Codepen