Hướng dẫn cài và sử dụng Vee-Validate cho nuxt js

folder Kiến thức công nghệ
today 21/10/2024 23:23
VeeValidate - một thư viện validation cho Vue. js. Nó cung cấp rất nhiều quy tắc để validation dữ liệu và dễ dàng custom lại theo mong muốn. Chúng ta có thể validate HTML5 inputs cũng như custom Vue components.
huong-dan-cai-va-su-dung-v-model-cho-nuxt-js

Bước 1: Tạo Dự Án Nuxt.js Mới

Nếu bạn chưa có dự án Nuxt.js, bạn có thể tạo một dự án mới :

Chú ý: Có 2 cách để tạo dự án Nuxtjs đó là:

  • npm
  • yarn

Đối với yarn chạy lệnh sau :

yarn create nuxt-app <project-name>

Còn đối với npm thì  tạo dự án bằng cách sử dụng npx:

npx create-nuxt-app servbay-nuxt-app

Bước 2: Cài Đặt Thư Viện vee-validate

Mở terminal và chạy lệnh sau để cài đặt vee-validate:

Đối với yarn chạy lệnh sau:

yarn add vee-validate

Còn với npm thì chạy lệnh :

npm install vee-validate --save

Bước 3: Tạo plugin cho vee-validate

Tạo một file mới trong thư mục plugins, ví dụ vee-validate.js:

import Vue from 'vue';
import { ValidationProvider, ValidationObserver, configure, extend } from 'vee-validate';
import { required, min, max, between, email, numeric, confirmed } from 'vee-validate/dist/rules';

Vue.component('validation-observer', ValidationObserver);
Vue.component('validation-provider', ValidationProvider);

// If any option you want to change common
configure({ bails: false });

// Continue to add the necessary rule
extend('minSalary', {
  validate: (value, { min, max } = {}) => {
    return Number(min) <= value && Number(max) >= value;
  },
  message: 'Dữ liệu nhập vào lớn hơn {length} VND.'
});
extend('maxSalary', {
  ...max,
  message: 'Dữ liệu nhập vào nhỏ hơn {length} VND.'
});
extend('min', {
  ...min,
  message: 'Dữ liệu nhập vào lớn hơn {length} ký tự.'
});
extend('max', {
  ...max,
  message: 'Dữ liệu nhập vào nhỏ hơn {length} ký tự.'
});
extend('required', {
  ...required,
  message: 'Đây là thông tin bắt buộc.'
});
extend('between', {
  ...between,
  params: ['min', 'max'],
  message: 'Dữ liệu nhập vào lớn hơn {min} ký tự và nhỏ hơn {max} ký tự.'
});
extend('email', {
  ...email,
  message: 'Địa chỉ email không đúng định dạng.'
});
extend('numeric', {
  ...numeric,
  message: 'Dữ liệu nhập vào phải là số.'
});
extend('confirmed', {
  ...confirmed,
  message: 'Mật khẩu không chính xác.'
});
extend('phone', {
  message: 'Số điện thoại không đúng định dạng',
  validate: (value) => {
    return /(02|03|05|07|08|09|01[2|6|8|9])+([0-9]{8})b/.test(value);
  }
});
extend('password', {
  message: 'Mật khẩu bao gồm 8-16 ký tự, có ít nhất 1 số, 1 ký tự viết hoa, 1 ký tự viết thường, 1 ký tự đặc biệt',
  validate: (value) => {
    return /(?=^.{8,16}$)((?=.*d)(?=.*W+))(?![.n])(?=.*[A-Z])(?=.*[a-z]).*$/.test(value);
  }
});
extend('website', {
  message: 'Đường dẫn website không đúng định dạng',
  validate: (value) => {
    return /^((ftp|http|https)://)?([a-zA-Z0-9]+.)[a-zA-Z0-9]+(.[a-zA-Z0-9]+)*/?$/.test(value);
  }
});
extend('facebook', {
  message: 'Đường đẫn facebook không đúng định dạng',
  validate: (value) => {
    return /^(?:(?:http|https)://)?(?:www.)?facebook.com/(?:(?:w)*#!/)?(?:pages/)?(?:[?w+-]*/)?(?:profile.php?id=(?=d.*))?([w+-+.]*)?$/.test(value);
  }
});
extend('limit_date', {
  message: 'Hạn nộp hồ sơ tối thiểu là 10 ngày',
  validate: (value) => {
    const today = new Date();
    const parts = value.split('/');
    const day = parts[0];
    const month = parts[1];
    const year = parts[2];
    const inputDate = new Date(`${year}-${month}-${day}`);
    const afterTenDay = new Date();
    afterTenDay.setDate(today.getDate() + 8);

    if (afterTenDay >= inputDate) {
      return false;
    } else {
      return true;
    }
  }
});

Bước 4: Đăng ký plugin trong nuxt.config.js

Mở file nuxt.config.js và thêm plugin:

// nuxt.config.js
export default {
  plugins: [
    '~/plugins/vee-validate.js'
  ]
};

Bước 5: Sử dụng vee-validate trong component

Bây giờ bạn có thể sử dụng vee-validate trong các component của bạn. Ví dụ, tạo một form trong pages/index.vue:

<template>
  <div>
    <h1>Form Validation with Vee-Validate</h1>
    <Form @submit="handleSubmit">
      <Field name="email" type="email" as="input" placeholder="Email" />
      <ErrorMessage name="email" />
      
      <Field name="password" type="password" as="input" placeholder="Password" />
      <ErrorMessage name="password" />

      <button type="submit">Submit</button>
    </Form>
  </div>
</template>

<script>
import { useForm } from 'vee-validate';

export default {
  setup() {
    const { handleSubmit } = useForm();

    const onSubmit = (values) => {
      console.log('Submitted values:', values);
    };

    return { handleSubmit: handleSubmit(onSubmit) };
  }
};
</script>

Bước 6: Chạy project 

Chạy project của bạn:

npm run dev

Kết quả

Khi bạn điền vào form và gửi, vee-validate sẽ kiểm tra tính hợp lệ của các trường và hiển thị thông báo lỗi nếu cần.

Nếu bạn có bất kỳ câu hỏi nào khác, hãy cho tôi biết!

Bài viết cùng chuyên mục

hatonet

Hướng dẫn cài và sử dụng vue-object-to-formdata cho dự án nuxtjs

today 11/12/2024 22:15
vue-object-to-formdata là một thư viện JavaScript được thiết kế để chuyển đổi một đối tượng JavaScript (Object) thành đối tượng FormData. Đây là một đối tượng có thể dễ dàng sử dụng trong các yêu cầu HTTP để gửi dữ liệu, đặc biệt là khi bạn cần gửi dữ liệu như là một phần của biểu mẫu (form), ví dụ: khi upload file hoặc gửi dữ liệu dưới dạng multipart/form-data.
Xem thêm arrow_right_alt
hatonet

Hướng dẫn cài đặt và sử dụng v-tooltip trong project nuxt js

today 04/12/2024 21:34
v-tooltip là một thư viện Vue.js nhẹ, dễ sử dụng, giúp tạo ra các tooltip (hộp thông báo khi người dùng di chuột qua một phần tử) trong các ứng dụng Vue. Tooltip là một yếu tố giao diện người dùng (UI) thông báo hoặc giải thích ngắn gọn về một đối tượng khi người dùng hover (di chuột) hoặc focus vào phần tử đó.
Xem thêm arrow_right_alt
hatonet

Hướng dẫn cài đặt và sử dụng thư viện Elementjs nuxtjs

today 28/11/2024 23:14
Thư viện Element UI là một bộ thư viện giao diện người dùng mạnh mẽ, cung cấp nhiều thành phần (components) tùy chỉnh sẵn, giúp bạn xây dựng giao diện ứng dụng dễ dàng và nhanh chóng. Đối với Nuxt.js , bạn có thể tích hợp và sử dụng Element UI một cách đơn giản. Dưới đây là hướng dẫn từng bước.
Xem thêm arrow_right_alt

Việc làm tại Hatonet

Actively collaborate with team leads to develop a cohesive vision for each Agent that ensures audience resonance, and successful integration with the existing cast through personality, visual aesthetics, and gameplay Lead, manage, and mentor a high performing, healthy, and collaborative concept art team Work with production to ensure your team’s timely and successful delivery of products Maintain and contribute to artifacts that inform, align, and empower teams to successfully create character concept art in the VALORANT style

  • GWS
  • Trưởng phòng IT
Onsite
vietnam_flag