// Quy tắc validate
var validateRule = {
// Tên trường
name: {
label: "Họ và tên", // Không bắt buộc
type: "string", // Không bắt buộc
// Gồm các kiểu "string" | "number" | "phone" | "email" | "url" | "date" | "password"
// Mặc định là "string"
rule: {
require: { // Không bắt buộc
value: true, // true | false
// Mặc định là false
message: "Không được để trống" // Không bắt buộc, thay thế cho message mặc định
},
}
},
amount: {
type: "number",
rule: {
min: {
value: 100
},
max: {
value: 200
}
}
},
}
// Form value
var value = {name: "Nguyen Van A", amount: 20};
// Gọi hàm validate
var validateForm = validate(value, config);
email: validate theo email
+ default regex: REGEX.email
+ default message: "%{label} không đúng định dạng" // label của trường
phone: validate theo số điện thoại (theo nhà mạng)
+ default regex: REGEX.phone
+ default message: "%{label} không đúng định dạng" // label của trường
date: validate ngày tháng năm
+ default regex: REGEX.date // format : dd-MM-YYYY | dd.MM.YYYY | dd/MM/YYYY
+ default message: "%{label} không đúng định dạng" // label của trường
url: validate theo url
+ default regex: REGEX.url // format : (http(s)://)(www.)myvbi.vn/
+ default message: "%{label} không đúng định dạng" // label của trường
age: validate theo tuổi. Giá trị truyền yêu cầu :
+ min: số tuổi nhỏ nhất cho phép
+ max: số tuổi lớn nhất cho phép
{
value: 16, // Giá trị tuổi
type: "d", // Tính theo đơn vị: d: ngày / m: tháng / y: năm -default: y
toDate: "", // Mốc ngày để tính tuổi (vd: ngày hiệu lực, ngày hiện tại) -default: ngày hiện tại
message: "Người được bảo hiểm phải trên 16 ngày tuổi" // Thông báo lỗi -default: lấy theo message min, max của number
},
string: validate theo chuỗi
number: validate theo số
require: Bắt buộc nhập hay không
+ default message: "Không được để trống"
min: quy định giá trị nhỏ nhất với number, hay ngắn nhất với string
+ default message (string): "%{label} phải nhiều hơn %{num} ký tự"
// label của trường, num là giá trị truyền vào (min)
+ default message (number): "%{label} phải lớn hơn %{num}"
// label của trường, num là giá trị truyền vào (min)
max: quy định giá trị lớn nhất với number, hay dài nhất với string
+ default message (string): "%{label} phải ít hơn %{num} ký tự"
// label của trường, num là giá trị truyền vào (max)
+ default message (number): "%{label} phải nhỏ hơn %{num}"
// label của trường, num là giá trị truyền vào (max)
length: độ dài cố định với cả string và number,
format: custom validate theo regex, truyền vào value là 1 regex
+ default message: "%{label} không đúng định dạng"
// label của trường
`- Lấy regex`
REGEX.email // regex cho email
REGEX.phone // regex cho phone ( theo nhà mạng )
REGEX.url // regex cho url
REGEX.date // regex cho date ( format: dd-MM-YYYY | dd.MM.YYYY | dd/MM/YYYY )
REGEX.password // regex cho password ( phải có chữ thường, chữ hoa, số và ký tự đặc biệt )
REGEX.cccd_hc // regex cho số CMT, CCCD, Hộ chiếu
`- Tính số tuổi`
validate.getAgeByDob(inputDate, compareDate, type);
+ inputDate: ngày tháng năm sinh
+ compareDate: ngày hiệu lưc, ngày hiện tại, ... mặc định là ngày hiện tại
+ type: "d" | "m" | "y" lấy số tuổi theo ngày | tháng | năm. Mặc định: "y"
vd: Tính số ngày tuổi của người có ngày sinh 20/12/2022 so với thời điểm 29/12/2022
validate.getAgeByDob("20/12/2022", "29/12/2022", "d");
// Kết quả: 9
Tính số năm tuổi của người có ngày sinh 28/09/1987 so với ngày hiện tại
validate.getAgeByDob("28/09/1987");
// Kết quả: 35