मुझे एक आंशिक दृश्य के साथ काम करने के लिए विनीत jquery सत्यापन प्राप्त करने की कोशिश करने में समस्या हो रही है जो AJAX कॉल के माध्यम से गतिशील रूप से भरी हुई है।
मैं इस कोड को बिना किसी भाग्य के काम करने के लिए बिता रहा हूं।
यहाँ देखें:
@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)
मुख्य दृश्य में आंशिक दृश्य प्रस्तुत करने के लिए उपयोग करता हूं (और मैं AJAX कॉल नहीं करता हूं), तो सत्यापन ठीक काम करता है।
यह शायद इसलिए है क्योंकि अगर मैं सामग्री को गतिशील रूप से लोड करता हूं, तो DOM में नियंत्रण मौजूद नहीं है। लेकिन मैं एक कॉल करता हूं, $.validator.unobtrusive.parse($("#res"));
जो नए लोड किए गए नियंत्रणों के बारे में सत्यापनकर्ता को बताने के लिए पर्याप्त होना चाहिए ...
क्या कोई मदद कर सकता है?
unobtrusive.parse
फ़ंक्शन एक तर्क के रूप में चयनकर्ता लेता है, एक तत्व नहीं।