অবিচ্ছিন্ন বৈধতা গতিশীল সামগ্রীর সাথে কাজ করছে না


97

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

আমি এই কোডটি কোনও ভাগ্য না নিয়ে কাজ করার জন্য চেষ্টা করে দিন কাটাচ্ছি।

এখানে দেখুন:

@model MvcApplication2.Models.test

@using (Html.BeginForm())
{
 @Html.ValidationSummary(true);
 <div id="res"></div>
 <input id="submit" type="submit" value="submit" />
}

আংশিক দেখুন:

@model MvcApplication2.Models.test

@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);

<script type="text/javascript" >
  $.validator.unobtrusive.parse(document);
</script>

মডেলটি:

  public class test
  {
    [Required(ErrorMessage= "required field")]
    public int MyProperty { get; set; }
  }

নিয়ামক:

    public ActionResult GetView()
    {
        return PartialView("Test");
    }

এবং অবশেষে, জাভাস্ক্রিপ্ট:

$(doument).ready(function () {
$.ajax({
    url: '/test/getview',
    success: function (res) {

        $("#res").html(res);
        $.validator.unobtrusive.parse($("#res"));
    }
});

$("#submit").click(function () {
    if ($("form").valid()) {
        alert('valid');
        return true;
    } else {
        alert('not valid');
        return false;
    }
});

বৈধতা কাজ করে না। এমনকি আমি টেক্সবক্সে কোনও তথ্য পূরণ না করলেও জমা দেওয়া ইভেন্টটি সতর্কতা দেখায় ('বৈধ')।

তবে, যদি গতিশীলরূপে ভিউটি লোড করার পরিবর্তে, আমি @Html.Partial("test", Model)মূল ভিউতে আংশিক ভিউ রেন্ডার করতে ব্যবহার করি (এবং আমি এজেএক্স কল করি না), তবে বৈধতা ঠিকঠাক কাজ করে।

এটি সম্ভবত কারণ যদি আমি কন্টেন্টটি গতিশীলভাবে লোড করি তবে নিয়ন্ত্রণগুলি ডোমটিতে এখনও বিদ্যমান নেই। তবে আমি একটি কল করছি $.validator.unobtrusive.parse($("#res")); যা নতুন বোঝা নিয়ন্ত্রণগুলি সম্পর্কে ভ্যালিডেটরকে দেওয়ার জন্য যথেষ্ট হওয়া উচিত ...

কেউ সাহায্য করতে পারেন?


আমারও একই সমস্যা ছিল, তবে এমভিসি ২-তে আমি ধাপে ধাপে এগিয়ে যাচ্ছি: ওয়েবলগস.এএসপিএন / আইরানবালচ / আর্কাইভ / ২০১০ / ২০১7 / ১১ / ২ এটি আপনাকে সহায়তাও করতে পারে। weblogs.asp.net/imranbaloch/archive/2011/03/05/… এই সহায়তার আশা করি :)
নরেশ পরমার

4
দ্রষ্টব্য, unobtrusive.parseফাংশনটি একটি নির্বাচককে একটি উপাদান হিসাবে নয়, আর্গুমেন্ট হিসাবে গ্রহণ করে।
ফ্রেড

উত্তর:


230

আপনি যদি ইতিমধ্যে পার্স করা একটি ফর্ম পার্স করার চেষ্টা করেন তবে তা আপডেট হবে না

আপনি যখন ফর্মটিতে গতিশীল উপাদান যুক্ত করবেন তখন আপনি যা করতে পারেন তা হয়

  1. আপনি ফর্মটির বৈধতা মুছে ফেলতে এবং এটিকে আবার যাচাই করতে পারেন:

    var form = $(formSelector)
        .removeData("validator") /* added by the raw jquery.validate plugin */
        .removeData("unobtrusiveValidation");  /* added by the jquery unobtrusive plugin*/
    
    $.validator.unobtrusive.parse(form);
    
  2. unobtrusiveValidationJquery dataপদ্ধতি ব্যবহার করে ফর্মের ডেটা অ্যাক্সেস করুন :

    $(form).data('unobtrusiveValidation')
    

    তারপরে নিয়ম সংগ্রহ অ্যাক্সেস করুন এবং নতুন উপাদানগুলির বৈশিষ্ট্যগুলি যুক্ত করুন (যা কিছুটা জটিল)।

আপনি কোনও ফর্মটিতে গতিশীল উপাদান যুক্ত করার জন্য ব্যবহৃত একটি প্লাগইনের জন্য এএসপি. নেট এমভিসি-তে গতিশীল সামগ্রীতে অব্যক্ত জ্যাকারি বৈধতা প্রয়োগ করার বিষয়ে এই নিবন্ধটিও পরীক্ষা করে দেখতে পারেন । এই প্লাগইন 2 য় সমাধান ব্যবহার করে।


17
ডুড ইউ রক, পুরোপুরি আমার বাঁচা! দুর্দান্ত উত্তর!
দিমিতর দিমিত্রভ

আমি ভীত ছিলাম যে আমি নিজেই এটি আমন্ত্রণ করব should এই পৃষ্ঠা থেকে স্ক্রিপ্ট একটি কবজ মত কাজ করে।
cezarypiatek

কোড, দুর্দান্ত কাজ করে - কুইক আপডেট (আমি যদি পারি) 1. আমি নকআউট ব্যবহার করছি এবং ক্ষেত্রের নাম ভালভাবে পেয়েছি এটি এটিকে সমস্যার মতো দেখায়। valid .)ator.unobtrusive.parseDynamicContent ('form'); (সমস্ত ক্ষেত্র পেতে), জমা দেওয়ার শেষে। ২. এটি ক্ষেত্রগুলির নাম দেওয়ার একটি উপায় দেওয়ার জন্য এটি jhnnyreilly.github.io/jQuery.Validation.Unobtrusive.Native/… খুব সুন্দর (যা প্রয়োজন বলে মনে হচ্ছে? পরিস্থিতি সম্ভবত পৃথক)
রিচার্ড হাশাম

কেবলমাত্র একটি নোট যে আপনি প্রয়োগ করেছেন এমন যে কোনও ফর্ম নির্দিষ্ট সেটিংস ফর্মটি পুনঃস্থাপন করার সময় থেকে $("form").data("validator").settingsসরিয়ে নেওয়া হবে $(formSelector).removeData("validator")এবং ডিফল্টগুলির সাথে প্রতিস্থাপন করা হবে $.validator.defaults। গতিশীল ক্ষেত্রগুলি অন্তর্ভুক্ত করার জন্য এটি দুর্দান্ত উপায়, তবে প্রতিটি তাজা পার্সে যে কোনও কাস্টম সূচনা কোড পুনরাবৃত্তি করতে ভুলবেন না।
কাইলমিট

19

নাদিম খেদরের উত্তরের সংযোজন হিসাবে ....

যদি আপনি গতিশীলভাবে আপনার ডিওমে একটি ফর্ম লোড করেন এবং তারপরে কল করুন

jQuery.validator.unobtrusive.parse(form); 

(উল্লিখিত অতিরিক্ত বিট সহ) এবং তারপরে এজাক্সটি কল করে মনে করে ফর্মটি জমা দিতে যাচ্ছেন remember

$(form).valid()

যা আপনি আপনার ফর্ম জমা দেওয়ার আগে সত্য বা মিথ্যা (এবং প্রকৃত বৈধতা চালায়) ফেরত দেয়।


হাই, আমি একই সমস্যার মুখোমুখি। আমি একটি পপ আপ (জ্যাকোরি ডায়ালগ) এ আমার গতিশীল দর্শন প্রদর্শন করছি। আপত্তিজনক বৈধতা কাজ করছে না। আমি আমার গতিশীল দৃশ্যে $ (ফর্ম)। বৈধ () বা অন্য কোথা থেকে কল করব?
মিমসসান

আমি সর্বদা inside (ফর্ম) এর ভিতরে মিথ্যা ফিরিয়ে ফর্ম জমা দেওয়া থেকে বিরত ছিলাম ub $ (ফর্ম)। বৈধ () এর উত্তর! ধন্যবাদ!
জাগারম্যান

6

এটি আপনার _ লেআউট.একএসটিএমএলে যুক্ত করুন

 $(function () {
        //parsing the unobtrusive attributes when we get content via ajax
        $(document).ajaxComplete(function () {
            $.validator.unobtrusive.parse(document);
        });
    });

4
এটি বিশেষত অদক্ষ।
লিয়াম

6

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



2

আমি একই সমস্যায় পড়েছি এবং এটি ব্যতীত আর কিছুই কার্যকর হয়নি:

$(document).ready(function () { 
    rebindvalidators();
});

function rebindvalidators() {
    var $form = $("#id-of-form");
    $form.unbind();
    $form.data("validator", null);
    $.validator.unobtrusive.parse($form);
    $form.validate($form.data("unobtrusiveValidation").options);
}

এবং যোগ কর

// Check if the form is valid
var $form = $(this.form);
if (!$form.valid())
    return;

যেখানে আপনি ফর্মটি সংরক্ষণ করার চেষ্টা করছেন।

আমি আজাক্স কলের মাধ্যমে ফর্মটি সংরক্ষণ করছিলাম।

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


4
এই আমার সাথে কাজ করা হয়। আমি গত অনেক দিন থেকে একটি সমাধান খুঁজে পেয়েছি, এটি এসপ নেট কোর 2 এ কাজ করে Thanks ধন্যবাদ।
প্রদীপ রুপারেলিয়া

0

কেবলমাত্র মডেল কোডের শেষে এই কোডটি অনুলিপি করুন

    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

;)

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