7

पर हैं मैं एक ASP.NET MVC 4 अनुप्रयोगjQuery.validation.js प्लगइन और MVC के jQuery.validation.unobtrusive का उपयोग करता है। जेएस। मैं एक पूर्णांक होने के लिए टेक्स्टबॉक्स के इनपुट को सत्यापित करने के लिए अपने दृश्य मॉडल पर डेटा एनोटेशन का उपयोग करता हूं।jQuery.Validation.Unobtrusive ग्राहक साइड सत्यापन केवल काम करता है जब स्क्रिप्ट दृश्य पेज

यह (नेस्टेड) ​​दृश्य का उपयोग कर एक माता पिता के दृश्य के भीतर भरी हुई है ...

<% Html.RenderPartial("New"); %> 

एक पहले inital पृष्ठ लोड, ग्राहक साइड सत्यापन काम करता है। लेकिन AJAX कॉल के साथ नेस्टेड दृश्य का कोई भी पुनः लोडिंग, क्लाइंट साइड सत्यापन अब काम नहीं करता है। ऐसा क्यों है?

अद्यतन: (webdeveloper के नीचे समाधान से कोड उदाहरण)

$.validator.unobtrusive.parse($('form')); 

उदाहरण:

var saveAndUpdate = function (url) { 
    var myForm = $('form', $('#TheDivThatContainsTheNewHTML')); 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     data: myForm.serialize(), 
     success: function (result) { 
      $('#TheDivThatContainsTheNewHTML').html(result); 
      $.validator.unobtrusive.parse($('#TheDivThatContainsTheNewHTML'));   
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      alert(xhr.status); 
      alert(thrownError); 
     }, 
     dataType: 'html' 
    }); 
} 

उत्तर

10

But any reloading of the nested view with an ajax call, client side validation no longer works. Why is that?

मान्यता document ready पर लागू होता है, जब आप ताज़ा पेज आपको चाहिए मैन्युअल रूप से सत्यापन के लिए init तुम्हारा फॉर्म।

इस तरह

:

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

एक ही प्रश्न: jquery.validate.unobtrusive not working with dynamic injected elements

+1

धन्यवाद! मैं यह भी ध्यान देता हूं कि मास्टर पेज द्वारा प्रदान की जाने वाली स्क्रिप्ट पर भरोसा करने के बजाय, आप नेस्टेड दृश्य में स्क्रिप्ट टैग को स्पष्ट रूप से जोड़कर इसे हल कर सकते हैं। – duyn9uyen

+0

http://stackoverflow.com/questions/16310448/mvc4-custom-unobtrusive-validator-isnt-working यहां जांचने के लिए भी अच्छी बात है – Andrei

संबंधित मुद्दे