76 lines
4.7 KiB
JavaScript
76 lines
4.7 KiB
JavaScript
(function (window, document) {
|
|
"use strict";
|
|
|
|
const element = (id) => document.getElementById(id);
|
|
const checked = (id) => Boolean(element(id)?.checked);
|
|
const requiredWhen = (id) => () => checked(id);
|
|
const sectionRule = (id, rule = {}) => Object.assign({ when: requiredWhen(id) }, rule);
|
|
const RULES = {
|
|
applno: { required: true, format: "AlphaNumeric", requiredMessage: "Application number is required." },
|
|
bank_branch_id: { required: true, requiredMessage: "Bank branch is required." },
|
|
product: { required: true, requiredMessage: "Product is required." },
|
|
customername: { required: true, format: "AlphaSpace", requiredMessage: "Customer name is required." },
|
|
apptype: { required: true, requiredMessage: "Application type is required." },
|
|
bankcode: { format: "AlphaNumeric" }, fathername: { format: "AlphaSpace" }, dob: { format: "Date" },
|
|
mobileno: { format: "AllowWrong" }, loanamount: { format: "LoanAmount" },
|
|
contactperson: { format: "AlphaSpace" }, specialinst: { format: "SplInstruction" },
|
|
raddr1: sectionRule("rv", { required: true, format: "SplInstruction" }), raddr2: sectionRule("rv", { format: "SplInstruction" }),
|
|
raddr3: sectionRule("rv", { required: true, format: "SplInstruction" }), rlandmark: sectionRule("rv", { format: "SplInstruction" }),
|
|
rcity: sectionRule("rv", { required: true }), colr: sectionRule("rv", { required: true, format: "SplInstruction" }),
|
|
rpincode: sectionRule("rv", { format: "Pincode" }), rphone: sectionRule("rtv", { required: true, format: "Phone" }),
|
|
companyname: sectionRule("ov", { format: "SplInstruction" }), oaddr1: sectionRule("ov", { required: true, format: "SplInstruction" }),
|
|
oaddr2: sectionRule("ov", { format: "SplInstruction" }), oaddr3: sectionRule("ov", { required: true, format: "SplInstruction" }),
|
|
olandmark: sectionRule("ov", { format: "SplInstruction" }), ocity: sectionRule("ov", { required: true }),
|
|
colo: sectionRule("ov", { required: true, format: "SplInstruction" }), opincode: sectionRule("ov", { format: "Pincode" }),
|
|
department: sectionRule("ov", { format: "SplInstruction" }), designation: sectionRule("ov", { format: "SplInstruction" }),
|
|
ophone: sectionRule("otv", { required: true, format: "Phone" }), extension: sectionRule("otv", { format: "Extension" }),
|
|
paddr1: sectionRule("pv", { required: true, format: "SplInstruction" }), paddr2: sectionRule("pv", { format: "SplInstruction" }),
|
|
paddr3: sectionRule("pv", { required: true, format: "SplInstruction" }), plandmark: sectionRule("pv", { format: "SplInstruction" }),
|
|
pcity: sectionRule("pv", { required: true }), colp: sectionRule("pv", { required: true, format: "SplInstruction" }),
|
|
ppincode: sectionRule("pv", { format: "Pincode" }), refname1: sectionRule("refv", { required: true, format: "AlphaSpace" }),
|
|
refaddress1: sectionRule("refv", { format: "SplInstruction" }),
|
|
refcontactno1: sectionRule("refv", { required: true, format: "Phone" }),
|
|
refname2: sectionRule("refv", { format: "AlphaSpace" }), refaddress2: sectionRule("refv", { format: "SplInstruction" }),
|
|
refcontactno2: sectionRule("refv", { format: "Phone" })
|
|
};
|
|
|
|
function registerDynamicRules(form) {
|
|
if (!form) return;
|
|
form.querySelectorAll("#FormPanel6 [data-validation-required]").forEach(function (field) {
|
|
const label = field.closest(".widget")?.querySelector(".lblcontainer")?.textContent.trim();
|
|
RULES[field.id] = {
|
|
required: field.dataset.validationRequired === "true",
|
|
format: field.dataset.validationFormat || "",
|
|
requiredMessage: (label || "This dynamic field") + " is required."
|
|
};
|
|
});
|
|
}
|
|
|
|
function validateField(field) {
|
|
const target = typeof field === "string" ? element(field) : field;
|
|
const rule = target && RULES[target.id];
|
|
return !target || !rule || window.CygnusFormValidation.validateElement(target, rule);
|
|
}
|
|
|
|
function validateForm() {
|
|
return window.CygnusFormValidation.validateRules(RULES);
|
|
}
|
|
|
|
function bind(form) {
|
|
if (!form || form.dataset.initiationValidationBound === "true") return;
|
|
registerDynamicRules(form);
|
|
form.dataset.initiationValidationBound = "true";
|
|
form.addEventListener("focusout", function (event) {
|
|
window.CygnusFormValidation.sanitizeElement(event.target);
|
|
validateField(event.target);
|
|
});
|
|
}
|
|
|
|
window.CygnusInitiationValidation = Object.freeze({
|
|
rules: RULES,
|
|
bind: bind,
|
|
validateField: validateField,
|
|
validateForm: validateForm
|
|
});
|
|
}(window, document));
|