Skip to content

How to manually validate forms?

Validate the entire form using the fApi.validate method

vue
<template>
   <form-create :rule="formRule" v-model:api="formApi" />
   <button @click="validateForm">Submit</button>
</template>
<script setup>
   import { ref } from 'vue';
   const fApi = ref(null);
   const formRule = ref([
   {
      type: 'input',
      field: 'username',
      title: 'Username',
      validate: [
   { required: true, message: 'Username is required', trigger: 'blur' }
      ]
   },
   {
      type: 'input',
      field: 'email',
      title: 'Email',
      validate: [
   { type: 'email', message: 'Please enter a valid email address', trigger: 'blur' }
      ]
   }
   ]);
   const validateForm = () => {
   fApi.value.validate().then(() => {
       console.log('Username validation passed, submit form');
       // Form submission logic
   }).catch(e=>{
       console.log('Username validation failed');
   });
};
</script>

Use the fApi.validateField method to validate only specific fields

Sometimes you only need to validate certain key fields, not the entire form.

vue
<template>
    <form-create :rule="formRule" v-model:api="formApi" />
    <button @click="validateFieldAndSubmit">Submit</button>
</template>
<script setup>
    import { ref } from 'vue';
    const formApi = ref(null);
    const formRule = ref([
        {
            type: 'input',
            field: 'username',
            title: 'Username',
            validate: [
                { required: true, message: 'Username is required', trigger: 'blur' }
            ]
        },
        {
            type: 'input',
            field: 'email',
            title: 'Email'
        }
    ]);
    const validateFieldAndSubmit = () => {
        formApi.value.validateField('username').then(() => {
            console.log('Username validation passed, submit form');
            // Form submission logic
        }).catch(e=>{
            console.log('Username validation failed');
        });
    };
</script>

FormCreate is an open-source project released under the MIT License. Free for personal and commercial use.