ডাব্লিক ইনজেকশন উপাদানগুলির সাথে কাজ করছে না jquery.uthorate.unobtrusive


100

আমি সাথে কাজ করছি ASP.Net MVC3, ক্লায়েন্ট বৈধতা ব্যবহার করার সহজ উপায় সক্ষম করা হবে jquery.validate.unobtrusive। সার্ভার থেকে ঠিক এমন স্টাফের জন্য সবকিছু ঠিকঠাক কাজ করে।

তবে আমি যখন জাভাস্ক্রিপ্টের সাহায্যে কিছু নতুন 'ইনপুট' ইনজেক্ট করার চেষ্টা করেছি এবং আমি জানতাম যে $.validator.unobtrusive.parse()বৈধতাগুলি পুনরায় ফিরিয়ে আনার জন্য আমাকে কল করতে হবে। তবে এখনও, সমস্ত গতিশীল ইনজেকশন ক্ষেত্রগুলি কাজ করছে না।

আরও খারাপ, আমি ব্যবহার করে ম্যানুয়ালি বাঁধতে চেষ্টা করি jquery.validateএবং এটিও কাজ করে না। কোন চিন্তা?


4
আপনি যদি গুগল থেকে এখানে এসে থাকেন তবে আপনি সম্ভবত @ সুন্দ্রা প্রবুর উত্তরটি সন্ধান করছেন যেহেতু ব্যাপকভাবে উত্সাহিত অন্যান্য যেগুলি পুরানো।
মাফিন ম্যান

উত্তর:


65

আমি jquery.uthorate.unobtrusive লাইব্রেরির জন্য একটি এক্সটেনশন তৈরি করেছি যা আমার পরিস্থিতির জন্য এই সমস্যার সমাধান করেছে - এটি আগ্রহী হতে পারে।

http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive- লাফিকেশন- to-dynamic-content/


আমি মনে করি আপনার উত্তরটি সঠিক হিসাবে হিসাবে দেওয়া উচিত। বিটিডাব্লু, আপনার লাইব্রেরিটি সর্বশেষতম এমভিসি আরসির সাথে কাজ করে? নাকি তারা ঠিক করে দিয়েছে?
xandy

4
উপরের লিঙ্কযুক্ত কোডটি ব্যবহার করার সময়, মন্তব্যগুলিতে কোড অন্তর্ভুক্ত করতে আপনি এটি আপডেট করেছেন তা নিশ্চিত করুন অন্যথায় এটি ভেঙে যেতে পারে। বিশেষত, আইডি ডাবল উদ্ধৃত করতে দুটি নির্বাচক লাইন পরিবর্তন করুন।
রায়ান ও'নিল

4
কিছুটা ডিবাগ করার পরে অবশেষে আমার দৃশ্যের জন্য এটি কাজ করতে সক্ষম হয়েছিল। এটি প্রদর্শিত হয় কোনও ইনপুট নির্বাচনকারীকে পাস না করা উচিত, তবে কল করার কারণে ইনপুটটির পিতামাতা বা ফর্মটি $.validator.unobtrusive.parse()। এছাড়াও, এটি কেবলমাত্র নতুন নিয়ম যুক্ত করার কথা বলেছে, তবে বিদ্যমান বিধিগুলির আপডেটগুলি তুলছে না?
lambinator

6
এই উত্তরে কমপক্ষে ব্লগ পোস্টের ভালুকের হাড় থাকা উচিত। লিঙ্কটি কেবলমাত্র উত্তর তাই জন্য বিষয় বন্ধ সাধারণত
লিয়াম

9
যদিও এই উত্তরটি 3+ বছর পুরানো তবে এটি অত্যন্ত সহায়ক হবে যদি আপনি এখানে এই সাইটে উত্তরটির প্রয়োজনীয় অংশগুলি পোস্ট করতে পারেন বা আপনার পোস্টের ঝুঁকি মুছে ফেলা হচ্ছে যেখানে FAQ দেখুন যেখানে এটি উত্তরগুলির উল্লেখ করেছে যেখানে 'লিঙ্কের চেয়ে সবেমাত্র বেশি '। আপনি চাইলে লিঙ্কটি অন্তর্ভুক্ত করতে পারেন তবে কেবল 'রেফারেন্স' হিসাবে। উত্তরটি লিঙ্কটির প্রয়োজন ছাড়াই নিজেরাই দাঁড়ানো উচিত।
তারিন

162

আমি জোহলেটের পদ্ধতির চেষ্টা করেছি কিন্তু দুর্ভাগ্যক্রমে এটি আমার পক্ষে কাজ করছে না। রবিনের দৃষ্টিভঙ্গি কাজ করেছিল এবং কাজ করে না। এটি গতিশীল যুক্ত উপাদানগুলির জন্য দুর্দান্ত কাজ করেছে, তবে আপনি যদি ডিওএম থেকে সমস্ত বৈধতা বৈশিষ্ট্য এবং স্প্যানস সরিয়ে JQuery ব্যবহার করার চেষ্টা করেন তবে বৈধতা পাঠাগারটি এখনও তাদের বৈধ করার চেষ্টা করবে।

তবে, আপনি যদি "বৈধতা ডেটা" ছাড়াও ফর্মটির "অবিচ্ছিন্ন" জালিয়াতি "ডেটাটি সরিয়ে থাকেন তবে এটি বৈধভাবে আপনার যুক্তিযুক্ত বা বৈধ নয় এমন উপাদানগুলিকে যুক্ত করার জন্য এবং মুছে ফেলার জন্য আকর্ষণীয় কাজ করেছে।

$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");

4
জোহলেট আমার পক্ষে প্রথম কাজ করেনি, তবে আমি লক্ষ্য করেছি যে পার্সকে নতুন উপাদানগুলির জন্য একটি ধারক পাস করতে হবে, উপাদানগুলি নয় - দ্রুত সমাধানটি উপাদান (গুলি) এর পরিবর্তে পুরো ফর্মটি পাস করতে হবে - তবে এটি একটি কবজ মত কাজ।
পার হর্নশিজ-শিয়েরবেক

4
কোন ধারণা কেন এটি validatorসংজ্ঞায়িত করা হয় না? আমার বৈধতা এবং বৈধতা উভয়ই রয়েছে un আমি এই
কোডগুলি

4
ধন্যবাদ এটি এএসপি.এমভিসি পাতায় যুক্ত হওয়া সামগ্রীর জন্য কাজ করে যা আজেএক্স কলের মাধ্যমে যুক্ত আংশিক দর্শন।
ম্যাকসেম কোজলেঙ্কো

ধন্যবাদ এটি সাহায্য করেছে। তবে আমি এমন একটি সমস্যার মুখোমুখি হয়েছি যেখানে আমি পৃষ্ঠায় অ্যাকর্ডিয়ান ব্যবহার করছি এবং যদি অ্যাকর্ডিয়ানটি ভেঙে যায় তবে এটি বৈধতাগুলিকে অগ্রাহ্য করে না। আমি এটা কিভাবে ঠিক করবো? আমি জানি যদি আমি এমভিসি 3 অবিস্মরণীয় পরিবর্তে সাধারণ জেকারি বৈধতা প্লাগইনটিতে যেতে পারি, আমাকে বলতে হয়েছিল$('#form').validate({ignore: ""})
পারਸ਼

4
এটি আমার জন্য পিএইচপি-তে কাজ করেছিল। কেবল এই তথ্যটি যুক্ত করা কারণ প্রতিটি মন্তব্য .NET এমভিসি তে পয়েন্ট করে। : পি
ফিনহুমিন

43

আমি আসলেই @ বিগিগিটি এবং @ রবিনস সমাধানের সরলতা পছন্দ করি, তাই আমি এটিকে একটি দ্রুত সামান্য প্লাগইনে রূপান্তরিত করেছি:

(function ($) {

    $.fn.updateValidation = function () {
        var $this = $(this);
        var form = $this.closest("form")
            .removeData("validator")
            .removeData("unobtrusiveValidation");

        $.validator.unobtrusive.parse(form);

        return $this;
    };
})(jQuery);

ব্যবহারের উদাহরণ:

$("#DischargeOutcomeNumberOfVisits")
    .attr("data-val-range-min", this.checked ? "1" : "2")
    .updateValidation();

valid .omotator.unobtrusive.parse ("#" + form.attr ("আইডি")) প্রতিস্থাপন করুন; valid .dialator.unobtrusive.parse (ফর্ম) সহ;
সফটলিয়ন

আপনি কেবলমাত্র 1 টি উপাদানকে নিকটতম ফেরত হিসাবে প্রথম।) নিরাপদে সরিয়ে ফেলতে পারেন।
সফটলিয়ন

ভাল
লাগল

ডেটা-ভ্যাল গুণাবলী যুক্ত এবং অপসারণ উভয়ের জন্যই সুন্দরভাবে কাজ করে
জুলিয়ান ডরমন

34

আমারও একই সমস্যা হচ্ছে আমি আবিষ্কার করেছি যে একই ফর্মের উপর valid .)ator.unobtrusive.parse () কে কল করা দুবার সম্ভব নয়। সার্ভার থেকে প্রাথমিকভাবে ফর্মটি লোড করার সময় ফর্মটি স্ববিরোধী গ্রন্থাগার দ্বারা স্বয়ংক্রিয়ভাবে পার্স করা হয়। আপনি যখন ফর্মটিতে একটি ইনপুট উপাদানটি গতিশীলভাবে যুক্ত করেন এবং আবার valid .)Lucator.unobtrusive.parse () কল করেন, এটি কাজ করবে না। একই পার্সিলিমেট () এর জন্য যায়।

স্ববিরোধী lib সমস্ত নিয়ম এবং বার্তা সেট করতে jquery বৈধ প্লাগইন এর বৈধতা পদ্ধতি কল। সমস্যা হ'ল, যখন আবার কল করা হয়, প্লাগিনটি প্রদত্ত বিধিগুলির নতুন সেট আপডেট করে না।

আমি একটি অপরিশোধিত সমাধান খুঁজে পেয়েছি: স্বার্থহীন লিবে পার্স পদ্ধতিটি কল করার আগে আমি ফর্মটি যাচাইকারীকে ফেলে দিয়েছি:

$('yourForm').removeData("validator");

এখন, যখন বৈধতা পদ্ধতিটি অযৌক্তিক লাইব দ্বারা ডাকা হয়, তখন সমস্ত নিয়ম এবং বার্তা গতিশীল যুক্ত ইনপুট সহ পুনরায় তৈরি করা হয়।

আশাকরি এটা সাহায্য করবে


একটি দাবী +1 টি - এটি একটি অশোধিত সমাধান মত আপনি নিজেকে বললেন, কিন্তু এটা প্রশংসনীয় এটি কী এবং কী অবস্থায় পরে তুমি আমায় ছেড়ে করছি পরিষ্কার
প্রতি Hornshøj-Schierbeck

4
ব্র্যাড উইলসন ব্লগ থেকে: "আপনি একটি একক এইচটিএমএল উপাদানকে বিশ্লেষণ করতে jQuery. লাডিয়োটার.অনোব্রুটসিভ.পারসিলিমেট () ফাংশনটিও কল করতে পারেন" " কোন সাহায্য?
jamesfm

@ পিয়ার হর্নশেজ-শিয়েরবেক: @ রবিন ভ্যান ডার কেনাপ: আমি এটি জানার জন্য শেষ ২-৩ ঘন্টা ব্যয় করেছি !! যাইহোক - এই দুর্দান্তভাবে কাজ করেছে। অপরিশোধিত আমাকে অনুভব করে যে আমার এটি ব্যবহার করা উচিত নয়- কেন আমি এটি করতে চাই না?
কেটিএফ

4
সমাধানটি কিছুটা অপরিশোধিত কারণ গতিযুক্ত যুক্ত বৈধকারক সহ সমস্ত বৈধকারীর অপসারণ এবং পুনরায় ইনস্টল করা হয়। কেবলমাত্র গতিযুক্ত যুক্ত বৈধকারক আপডেট করা থাকলে এটি আরও ভাল। @ অ্যাকল্যান্ট তার উত্তরে একটি ক্লিনার সমাধান সরবরাহ করে তবে মূলত এমএসের উদ্ভাবনী গ্রন্থাগারটি এই দৃশ্যের জন্য আপডেট করা উচিত।
রবিন ভ্যান ডার কানাপ

9

আমি এমভিসি 4 এবং জ্যাকিউয়ারি 1.8 ব্যবহার করছি , দেখে মনে হচ্ছে যে জ্যাকারীকে অ্যাজাক্সের মাধ্যমে গতিশীলভাবে ইনজেকশনের সামগ্রী বা ডিওমে জিকোয়ারিকে বৈধতা দিতে সক্ষম করার জন্য নিম্নলিখিত কোডের টুকরোটি দরকার।

আমি একটি মডুলার ফাংশন তৈরি করেছি যা সদ্য যুক্ত হওয়া উপাদানটির Jquery অবজেক্ট গ্রহণ করে। আপনি যদি tblContactsএকটি বোতামের ক্লিকে জ্যাকুরির আইডির সাহায্যে কোনও নতুন টেবিলটি ক্লোন করে ফেলেছেন, তবে নীচের ফাংশনটি আপনার জেএস ফাইলের মধ্যে অন্তর্ভুক্ত করুন

function fnValidateDynamicContent(element) {
    var currForm = element.closest("form");
    currForm.removeData("validator");
    currForm.removeData("unobtrusiveValidation");
    $.validator.unobtrusive.parse(currForm);
    currForm.validate(); // This line is important and added for client side validation to trigger, without this it didn't fire client side errors.
}

এবং এটিকে কল করুন:

fnValidateDynamicContent("#tblContacts")

কার্ফর্ম.অলডেট (); আসলে কার্লফর্ম.অডিয়ালিটি () হওয়া উচিত; (টাইপো) যদিও ভাগ করে নেওয়ার জন্য ধন্যবাদ, এটি আমার পক্ষে কাজ করেছে
জন ম্যাক

4
@ জনএমসি এখন টাইপ ঠিক করেছেন
সুন্দ্রা

এটিই আমার পক্ষে কাজ করেছে (এমভিসি 4 এবং জেকারি 1.10)
দ্য মাফিন ম্যান

4

নিয়মগুলি কেন jquery বৈধতা ডক থেকে সরাসরি ব্যবহার করবেন না । এটার মত:

$('#newField0').rules('add', {
    required: true,
    minlength: 2
});
//use Html.ValidationMessage will renders a span element, unobtrusive need it to display errors
$('@Html.ValidationMessage("newField0")').insertAfter('#newField0');

2

উপরের উত্তর হিসাবে চিহ্নিত জেহলেন্টের সমাধান থেকে নেওয়া, আমি এটিতে কিছুটা প্রসারিত করেছি।

$.validator.unobtrusive.parseDynamicContent = function (selector) {
    var $selector = $(selector),
        $jqValUnob = $.validator.unobtrusive,
        selectorsDataValAttr = $selector.attr('data-val'),
        $validationInputs = $selector.find(':input[data-val=true]');

    if ((selectorsDataValAttr !== 'true') && 
        ($validationInputs.length === 0)) { 
        return; 
    }

    if (selectorsDataValAttr === 'true') {
        $jqValUnob.parseElement(selector, true);
    }

    $validationInputs.each(function () {
        $jqValUnob.parseElement(this, true);
    });

    //get the relevant form
    var $form = $selector.first().closest('form');

    $jqValUnob.syncValdators($form);
};

/* synchronizes the unobtrusive validation with jquery validator */
$.validator.unobtrusive.syncValdators = function ($form) {
    if ($.hasData($form[0])) {
        var unobtrusiveValidation = $form.data('unobtrusiveValidation'),
            validator = $form.validate();

        // add validation rules from unobtrusive to jquery
        $.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
            if (validator.settings.rules[elname] == undefined) {
                var args = {};
                $.extend(args, elrules);
                args.messages = unobtrusiveValidation.options.messages[elname];
                $("[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];
                        $("[name='" + elname + "']").rules("add", args);
                    }
                });
            }
        });
        // remove all validation rules from jquery that arn't in unobtrusive
        $.each(validator.settings.rules, function (elname, elrules) {
            if (unobtrusiveValidation.options.rules[elname] === undefined) {
                delete validator.settings.rules[elname];
            } else {
                $.each(elrules, function (rulename, data) {
                    if (rulename !== "messages" && unobtrusiveValidation.options.rules[elname][rulename] === undefined) {
                        delete validator.settings.rules[elname][rulename];
                    }
                });
            }
        });
    }        
};

$.validator.unobtrusive.unparseContent = function (selector) {
    var $selector = $(selector);

    // if its  a text node, then exit
    if ($selector && $selector.length > 0 && $selector[0].nodeType === 3) {
        return;
    }

    var $form = $selector.first().closest('form'), 
        unobtrusiveValidation = $form.data('unobtrusiveValidation');

    $selector.find(":input[data-val=true]").each(function () {
        removeValidation($(this), unobtrusiveValidation);
    });
    if ($selector.attr('data-val') === 'true') {
        removeValidation($selector, unobtrusiveValidation);
    }
    $.validator.unobtrusive.syncValdators($form);
};

function removeValidation($element, unobtrusiveValidation) {
    var elname = $element.attr('name');
    if (elname !== undefined) {
        $element.rules('remove');
        if (unobtrusiveValidation) {
            if (unobtrusiveValidation.options.rules[elname]) {
                delete unobtrusiveValidation.options.rules[elname];
            }
            if (unobtrusiveValidation.options.messages[elname]) {
                delete unobtrusiveValidation.options.messages[elname];
            }
        }
    }
}

সুতরাং মূলত এটি এখনও উপরোক্ত জাহলেেন্টের সমাধান হিসাবে একইরূপে কাজ করে তবে আমি আপনাকে ডোম থেকে সরানো উপাদানগুলির জন্য নিয়ম সরিয়ে নেওয়ার ক্ষমতা যুক্ত করেছি। সুতরাং, আপনি যখন ডোম থেকে উপাদানগুলি সরিয়ে ফেলেন এবং আপনি সেই বৈধতা সংক্রান্ত বিধিগুলি অপসারণ করতে চান তখনও কল করুন:

$.validator.unobtrusive.unparseContent('input.something');

2

আমি সার্থকতার উত্তর চেষ্টা করেছিলাম এবং প্রথমে সমস্ত কিছু কাজ করে বলে মনে হয়েছিল। তবে কিছুক্ষণ পরে আমি লক্ষ্য করেছি যে বৈধতাটি আমার আরও যুক্ত হওয়া আইটেমগুলি গতিবেগের সাথে ধীরে ধীরে ধীরে ধীরে হয়ে যায়। কারণটি হ'ল তার সমাধান ইভেন্ট হ্যান্ডলারদের আবদ্ধ করে না, তবে প্রতিবার নতুন যুক্ত করে। সুতরাং আপনি 5 টি আইটেম যুক্ত করলে বৈধতা কেবল একবারের পরিবর্তে 6 বার কার্যকর করা হয়। এটি ঠিক করতে আপনাকে ইভেন্টগুলি অতিরিক্তভাবে সরানোডাটা কলগুলিতে আবদ্ধ করতে হবে।

$("form").removeData("validator")
         .removeData("unobtrusiveValidation")
         .off("submit.validate click.validate focusin.validate focusout.validate keyup.validate invalid-form.validate");
$.validator.unobtrusive.parse("form");

1

আমি আমার কোডে @ জেহলেন্টের কোড স্ক্রিপ্টটি পেয়েছি এবং এটি মুছতে চলেছি কারণ আমি এটি ব্যবহার করছি না, যা আমাকে এই SO প্রশ্নের দিকে নিয়ে যায়।

এই কোডটি বেশ পরিষ্কার এবং সহজ:

jQuery.fn.unobtrusiveValidationForceBind = function () {
    //If you try to parse a form that is already parsed it won't update
    var $form = this
       .removeData("validator") /* added by the raw jquery.validate plugin */
            .removeData("unobtrusiveValidation");  /* added by the jquery     unobtrusive plugin */

    $form.bindUnobtrusiveValidation();
}

তারপরে, এই jQuery এক্সটেনশানটি কল করতে, আপনার ফর্মটি ধরার জন্য কেবল একজন নির্বাচক ব্যবহার করুন:

$('#formStart').unobtrusiveValidationForceBind();

ভায়োলা!


1

গতিশীল বিষয়বস্তুর ক্ষেত্রে আপনাকে নীচের মতো বিবাদী বৈধতা আপডেট করতে Formহবে এবং জমা দেওয়ার সময় বৈধ কিনা তা পরীক্ষা করে দেখুন ।

function UpdateUnobtrusiveValidations(idForm) {
    $(idForm).removeData("validator").removeData("unobtrusiveValidation");
    $.validator.unobtrusive.parse($(idForm));
};


$('#idDivPage').on('click', '#idSave', function (e) {
    e.preventDefault();
    if (!$('#idForm').valid()) {
        // Form is invalid … so return
        return false;
    }
    else {
        // post data to server using ajax call
        // update Unobtrusive Validations again
        UpdateUnobtrusiveValidations('#idForm');
    }
});

0

আমি কিছুক্ষণের জন্য এটিকে ঘিরে বেড়াচ্ছি, সমাধানগুলি স্ক্র্যাপ করে আবার চেষ্টা করছি (যখন আমার কিছুটা অতিরিক্ত সময় ছিল, তখন বিশ্বাস করুন বা না)।

আমি নিশ্চিত নই যে এই আচরণটি jquery (আমরা 1.7.2 ব্যবহার করছি) এর নতুন সংস্করণে পরিবর্তিত হয়েছি যেহেতু এই থ্রেডটি তৈরি করা হয়েছিল বা সর্বশেষে মন্তব্য করা হয়েছিল, তবে আমি খুঁজে পেলাম যে .parseElement(inputElement)যখন আমি কোনও ফর্মটিতে গতিশীলভাবে তৈরি উপাদানগুলিকে যুক্ত করার চেষ্টা করি তখন এর মধ্যে ইতিমধ্যে একটি বৈধকরণকারী লোড হয়েছে। এটি ইতিমধ্যে @ জেমসএমএম (ফেব্রুয়ারী 15 '11) উপরের মন্তব্যের মধ্যে একটিতে পরামর্শ দিয়েছিল, কিন্তু আমি প্রথম কয়েকবার এটিতে কাজ করেছিলাম এটিকে উপেক্ষা করেছি। সুতরাং আমি এটিকে আরও সুস্পষ্ট করার জন্য এটি একটি পৃথক উত্তর হিসাবে যুক্ত করছি এবং কারণ আমি মনে করি এটি একটি ভাল সমাধান এবং এত বেশি ওভারহেডের প্রয়োজন নেই। পরবর্তী উত্তরগুলিতে উত্থাপিত সমস্ত সমস্যার জন্য এটি প্রাসঙ্গিক নাও হতে পারে তবে আমি মনে করি এটি মূল প্রশ্নের সমাধান হবে। আমি কীভাবে আমার কাজ করলাম তা এখানে:

//row & textarea created dynamically by an async ajax call further up in the code
var row = ...; //row reference from somewhere
var textarea = row.find("textarea");
textarea.val("[someValue]");

//add max length rule to the text area
textarea.rules('add', {
    maxlength: 2000
});
//parse the element to enable the validation on the dynamically added element
$.validator.unobtrusive.parseElement(textarea);

0

প্রথমত, আমি মনে করি কলটি .ডাডিয়েটারের হওয়া উচিত, বৈধ নয় তবে আপনাকে ফর্মের আইডিতে পাস করতে হবে

$.validator.unobtrusive.parse("#id");

আমি ধরে নিই যে আপনি jquery.diateate & jquery.uthorate.unobtrusive স্ক্রিপ্ট উভয়ই লোড করেছেন এবং Html.EnableClientValidation () এবং Html.EnableUnobtrusiveJavaScript () পদ্ধতিতে কল করেছেন? আপনি কি আপনার বেস পৃষ্ঠার জন্য একটি কোড নমুনা এবং গতিশীল লোড ফর্মটি সম্ভবত পোস্ট করতে পারেন?
ক্রিস অলমার্ক

0

আপনার যদি কিছু ত্রুটি ইতিমধ্যে প্রদর্শিত হতে পারে এমন সম্ভাবনা সহ জিনিসগুলি যুক্ত করতে এবং মুছে ফেলার দরকার হয় তবে এটিই আমি নিয়ে এসেছি। এটি মূলত এই প্রশ্ন পৃষ্ঠায় বিভিন্ন ধারণার উপর ভিত্তি করে। আমি destroy()জিকুয়েরি বৈধতার জন্য ডেটা অ্যাট্রিবিউট সরিয়ে দেওয়ার পরিবর্তে বিল্ট ইন ব্যবহার করি ।

function resetValidator($form: JQuery) {
    $form.validate().destroy();

    //reset unobtrusive validation summary, if it exists
    $form.find("[data-valmsg-summary=true]")
        .removeClass("validation-summary-errors")
        .addClass("validation-summary-valid")
        .find("ul").empty();

    //reset unobtrusive field level, if it exists
    $form.find("[data-valmsg-replace]")
        .removeClass("field-validation-error")
        .addClass("field-validation-valid")
        .empty();

    $form.removeData("unobtrusiveValidation");
}

ফর্মের ইনপুটগুলিকে গতিশীল পরিবর্তন করার আগে আপনি এটি কল করেছেন। তারপরে আপনি বৈধতাটি পুনরায় পুনরায় দিন।

resetValidator($form);
//add or remove inputs here ...
$.validator.unobtrusive.parse($form);

দ্রষ্টব্য: কিছু বা সমস্ত ইনপুট যদি বৈধ হয়ে থাকে এবং ত্রুটিগুলি থাকে তবে সেই ত্রুটিগুলি পুনরায় সেট করা হবে ... তবে তারা পরবর্তী বৈধকরণে সঠিকভাবে ফিরে আসবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.