Tôi đang gặp sự cố khi cố gắng xác thực jquery không phô trương hoạt động với chế độ xem một phần được tải động thông qua lệnh gọi AJAX.
Tôi đã dành nhiều ngày để cố gắng làm cho mã này hoạt động mà không gặp may.
Đây là Chế độ xem:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
Chế độ xem một phần:
@model MvcApplication2.Models.test
@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);
<script type="text/javascript" >
$.validator.unobtrusive.parse(document);
</script>
Ngươi mâu:
public class test
{
[Required(ErrorMessage= "required field")]
public int MyProperty { get; set; }
}
Bộ điều khiển:
public ActionResult GetView()
{
return PartialView("Test");
}
và cuối cùng, javascript:
$(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;
}
});
Việc xác nhận không hoạt động. Ngay cả khi tôi không điền bất kỳ thông tin nào vào hộp thư, sự kiện gửi sẽ hiển thị cảnh báo ('hợp lệ').
Tuy nhiên, nếu thay vì tải động chế độ xem, tôi sử dụng @Html.Partial("test", Model)
để hiển thị một phần Chế độ xem trong Chế độ xem chính (và tôi không thực hiện lệnh gọi AJAX), thì việc xác nhận hoạt động tốt.
Điều này có thể là do nếu tôi tải nội dung động, các điều khiển chưa tồn tại trong DOM. Nhưng tôi thực hiện một cuộc gọi đến $.validator.unobtrusive.parse($("#res"));
đủ để cho trình xác nhận về các điều khiển mới được tải ...
Có ai giúp được không ?
unobtrusive.parse
hàm nhận bộ chọn làm đối số, không phải phần tử.