मैं एक गतिशील इनपुट क्षेत्र में सत्यापन जोड़ने की कोशिश कर रहा हूँ। मैं जो कर रहा हूं वह मूल रूप से एक फ़ील्ड को छुपाता है और दिखाता है (दोनों में लॉगिंग और पंजीकरण फॉर्म 1 में) इस तरह:
<div id="RegBoxStorage" style="display: none;">
@Html.LabelFor(m => Model.Name)
@Html.TextBoxFor(m => Model.Name)
@Html.ValidationMessageFor(m => m.Name)
</div>
@using (Html.BeginForm("Login", "Auth", FormMethod.Post, new { id = "AuthForm" }))
{
<div id="RegBox" style="display: none;">
</div>
<div id="LoginBox">
@Html.LabelFor(m => Model.Email)
@Html.TextBoxFor(m => Model.Email)
@Html.ValidationMessageFor(m => m.Email)
@Html.LabelFor(m => Model.Password)
@Html.TextBoxFor(m => Model.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<input type="submit" id="BtnAuthSub" value="Login" />
or <a id="ToggleAuth" href="#">Sign Up</a>
}
लिपी:
$('#AuthForm').removeData("validator");
$('#AuthForm').removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(this.authForm); // error here
प्लगइन:
(function ($) {
$.validator.unobtrusive.parseDynamicContent = function (selector) {
//use the normal unobstrusive.parse method
$.validator.unobtrusive.parse(selector); //Error here
//get the relevant form
var form = $(selector).first().closest('form');
//get the collections of unobstrusive validators, and jquery validators
//and compare the two
var unobtrusiveValidation = form.data('unobtrusiveValidation');
var validator = form.validate();
$.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
if (validator.settings.rules[elname] == undefined) {
var args = {};
$.extend(args, elrules);
args.messages = unobtrusiveValidation.options.messages[elname];
//edit:use quoted strings for the name selector
$("[name='" + elname + "']").rules("add", args);
} else {
$.each(elrules, function (rulename, data) {
if (validator.settings.rules[elname][rulename] == undefined) {
var args = {};
args[rulename] = data;
args.messages = unobtrusiveValidation.options.messages[elname][rulename];
//edit:use quoted strings for the name selector
$("[name='" + elname + "']").rules("add", args);
}
});
}
});
}
})($);
इसलिए जब कोई उपयोगकर्ता ToggleAuth
पर क्लिक करता है, तो मैं फॉर्म के अंदर सामग्री को RegBoxStorage
से RegBox
पर ले जाता हूं। अब मुझे इनपुट में सत्यापन को मैन्युअल रूप से जोड़ने की आवश्यकता है। सभी विनीत सत्यापन विशेषताएँ पहले से ही इस पर हैं। तो इस answer से, मैं कोशिश की और कहता है $.validator is undefined
।
लेकिन फॉर्म के अन्य हिस्सों को वास्तव में मान्य किया गया है, यह दर्शाता है कि सत्यापन कार्य करता है, मेरे पास jquery.validation और jquery.validation.unobtrusive सत्यापन दोनों संदर्भित हैं। क्या समस्या हो सकती है?
मैंने इस ब्लॉग से प्लगइन एक्सटेंशन भी लिया। .
1 उत्तर
कुछ चीजें जांचें:
आपने विस्तार लिखा है लेकिन फिर भी खंड में स्क्रिप्ट का उपयोग
$.validator.unobtrusive.parse(this.authForm)
- सुनिश्चित करें कि आप parseDynamicContent का उपयोग करते हैं।सुनिश्चित करें कि आप प्लगइन कोड से पहले सत्यापन.जेएस और सत्यापन.अविभाज्य.जेएस का संदर्भ लें।
- सुनिश्चित करें कि आपका स्क्रिप्ट अनुभाग jQuery document.ready फ़ंक्शन के अंदर है और प्लगइन के बाद निष्पादित होता है।
संबंधित सवाल
नए सवाल
jquery
jQuery एक जावास्क्रिप्ट लाइब्रेरी है, जावास्क्रिप्ट टैग को जोड़ने पर भी विचार करें। jQuery एक लोकप्रिय क्रॉस-ब्राउज़र जावास्क्रिप्ट लाइब्रेरी है, जो दस्तावेज़ ऑब्जेक्ट मॉडल (DOM) ट्रैवर्सल, इवेंट हैंडलिंग, एनिमेशन और AJAX इंटरैक्शन को ब्राउज़रों की विसंगतियों को कम करके सुविधाजनक बनाता है। JQuery से संबंधित एक प्रश्न jQuery से संबंधित होना चाहिए, इसलिए jQuery को प्रश्न में कोड द्वारा उपयोग किया जाना चाहिए और कम से कम jQuery के उपयोग से संबंधित तत्वों को प्रश्न में होना चाहिए।