k01ken’s b10g

He110 W0r1d!

Vueでテキストフォームの値に応じて、ボタンを有効/無効にする

開発環境は、Windows 10 Pro(64bit) + Vue 2.6.12。

現在のテキストフォームの値は、watchを使って監視をします。watchの中に、v-modelで紐づけているdataのオブジェクトのキー名を指定して、そのオブジェクトに変化があれば、watchがそれに応じて変化します。

今回は、簡易的なバリデーションとして、ユーザー名が8文字以上、パスワードが8文字以上であれば、ボタンを有効にするというプログラムを作ってみます。

<template>
  <div>
    <form>
      <input type="text" v-model="username" />
      <input type="password" v-model="password" />
      <input type="button" value="登録" v-bind:disabled=button_flug />
    </form>
  </div>
</template>

<script>
import Vue from 'vue'

export default Vue.extends({
  data: () => ({
    username: '',
    password: '',
    username_flug: false,
    password_flug: false,
    button_flug: false
  }),
  watch: {
    username: function(newValue){
      this.username_flug = newValue.length >= 8 ? true : false
      this.button_flug = this.username_flug && this.password_flug ? true : false 
    },
    password: function(newValue){
      this.password_flug = newValue.length  >= 8 ? true : false
      this.button_flug = this.username_flug && this.password_flug ? true : false 
    }
  }
})
</script>