/ / jQuery प्रमाणीकरण प्लगइन - लूप में validator.addMethod का उपयोग - asp.net, जावास्क्रिप्ट, jquery, सत्यापन

jQuery सत्यापन प्लगइन - लूप में validator.addMethod का उपयोग - asp.net, जावास्क्रिप्ट, jquery, सत्यापन

मेरे पास नियमित अभिव्यक्तियों की एक अच्छी संख्या हैसत्यापन के लिए। प्रत्येक regex के लिए मैन्युअल रूप से कई addMethods टाइप करने के बजाय, मैंने एक लूप का उपयोग करने की कोशिश की। मेरे पास रेगेक्स नाम, RegExp ऑब्जेक्ट और सत्यापन संदेश रखने के लिए नीचे अनुरूपित संरचना है।

function RegExs(exprName, expr, exprVM) {
this.exprName = exprName;
this.expr = expr;
this.exprVM = exprVM;
}

उपरोक्त की सरणी को पॉप्युलेट करने के बाद, मैं अपडेट और बनाए रखने के लिए चीजों को अधिक आसान बनाने के लिए, addMethods के माध्यम से लूप करता हूं और करता हूं:

for (i in pgRegExs) {

$.validator.addMethod(pgRegExs[i].exprName,
function(value, element) {
return this.optional(element) || pgRegExs[i].expr.test(value);
},
function(value, element) { return pgRegExs[i].exprVM; }
);
}

हालांकि, वैधकर्ता नियमित अभिव्यक्ति को चुनने वाला प्रतीत नहीं होता है। इसे नाम और सत्यापन संदेश मिलता है। कोई सुराग?

अद्यतन करें: सुधार: सत्यापनकर्ता फंक्शन सरणी उठा रहा है, लेकिन सरणी में अंतिम एक प्रत्येक इनपुट पर लागू होता है। तो अगर मेरे पास है:

pgRegExs = [
new RegExs("addrCustName", regExAddrCustName, regExAddrCustNameVM),
new RegExs("addrStreet", regExZipCodeLng, regExZipCodeLngVM),
new RegExs("addrCity", regExZipCodeLng, regExZipCodeLngVM),
new RegExs("zipcodeLng", regExZipCodeLng, regExZipCodeLngVM),
new RegExs("emailFormat", regExEmailAddr, regExEmailAddrVM),
new RegExs("emailLength", regExEmailAddrLen, regExEmailAddrLenVM)
];

प्रत्येक इनपुट पर ईमेल लम्बाई नियमित अभिव्यक्ति लागू होती है। नीचे, इनपुट क्षेत्र पर addrCustName लागू किया जाना चाहिए, लेकिन इसके बजाय ईमेल लम्बाई का उपयोग किया जाता है।

$("[id$="_tbFName"]").rules("add",
{
required: true,
addrCustName: true,
messages: {
required: "First name required",
addrCustName: function(value, element) { return regExAddrCustNameVM; }
}
}
);

उत्तर:

जवाब के लिए 0 № 1

मुझे एक बंद करने की आवश्यकता है:

for (i in pgRegExs) {

(function(pgRegEx) {

$.validator.addMethod(pgRegEx.exprName,
function(value, element) {
return this.optional(element) || pgRegEx.expr.test(value);
},
function(value, element) { return pgRegEx.exprVM; }
);

})(pgRegExs[i]);

}