Skip to content
sumnail

v-formを使用したバリデーションの実装方法

created at : 2024/07/23

Vue3
Vuetify
Sample

v-formのProps

validate-on

blurchangeを指定することで、バリデーションのタイミングを指定できます。

バリデーションの実装方法

required

入力必須のバリデーションの実装例です。

入力フォームに値が入力されていない場合、エラーメッセージを表示します。

validation : false
Sample Code
vue
<template>
  <v-form
    v-model="isValid"
  >
    <v-text-field
      v-model="name"
      :rules="[
        (v) => !!v || 'Name is required',
    ]"
    >
      <template v-slot:label>First Name</template>
    </v-text-field>
    validation : {{ isValid }}
  </v-form>
</template>
vue
<script setup lang="ts">
import { ref } from 'vue';

const name = ref('');
const isValid = ref(false);
</script>

min/max

入力値の最小値、最大値を指定してバリデーションの実装例です。 入力フォームに指定した入力値よりも少ない文字数または多い文字数の場合、エラーメッセージを表示します。

validation : false
Sample Code
vue
<template>
  <v-form
    v-model="isValid"
  >
    <v-text-field
      v-model="name"
      :rules="[
        (v) => v.length <= 10 || 'Name must be less than 10 characters',
        (v) => v.length >= 3 || 'Name must be more than 3 characters',
    ]"
    >
      <template v-slot:label>First Name</template>
    </v-text-field>
    validation : {{ isValid }}
  </v-form>
</template>
vue
<script setup lang="ts">
import { ref } from 'vue';

const name = ref('');
const isValid = ref(false);
</script>

イベントタイミングでのバリデーション

v-formvalidateメソッドを使用して、イベントタイミングでバリデーションを行う方法です。

入力途中での送信時など、イベントタイミングでバリデーションを行いたい場合に使用できます。

サンプルでは、イベントタイミングでバリデーションが実行されるようにvalidate-onblurを指定しています。

validation : false
Sample Code
vue
<template>
  <v-form
    v-model="isValid"
    ref="form"
    validate-on="blur"
  >
    <v-text-field
      v-model="name"
      :rules="[
        (v) => !!v || 'Name is required',
    ]"
    >
      <template v-slot:label>First Name</template>
    </v-text-field>
    <v-btn @click="validateForm">Validate</v-btn>
  </v-form>
  validation : {{ isValid }}
</template>
vue
<script setup lang="ts">
import { ref } from 'vue';

const name = ref('');
const isValid = ref(false);
const form = ref();

const validateForm = () => {
  form.value.validate();
}
</script>