検索バーを含むページがあり、デフォルトでは下に項目のリストが表示されます。ユーザーが数量を更新できるように、各アイテムは ajaxform 内にラップされます。クライアント側の検証は、ページの読み込み時に完全に正常に機能し、数量が必要です。
ユーザーが検索をクリックするとすぐに、パーシャルの結果が更新され、検証全体が中断され、検証の概要が表示されなくなります。
呼び出してパーシャルをリフレッシュした後、検証を追加しようとしました$.validator.unobtrusive.parse($("#resultList"));
が、何もしないようです。
解決策はありますか?
メインフォーム
<script>
function onSearchSucceeded() {
$.validator.unobtrusive.parse($("#resultList"));
}
function onUpdateSucceeded() {
$.validator.unobtrusive.parse($("#resultList"));
}
$(function () {
$("#resultList :input[type=text]").blur(function () {
$(this).closest("form").submit();
});
)};
</script>
@using (Ajax.BeginForm("Search",
null,
new AjaxOptions
{
UpdateTargetId = "resultList",
LoadingElementId = "searchLoader",
OnSuccess = "onSearchSucceeded"
},
new
{
id = "searchForm"
}
))
{
@Html.TextBoxFor(m => m.query)
<input type="submit" value="search" />
}
<div id="resultList">
@Html.Partial("SearchResult", Model.Results)
</div>
部分的
@foreach (var item in Model) {
using (Ajax.BeginForm("UpdateItem",
new AjaxOptions {
UpdateTargetId = "resultList",
OnSuccess = "onUpdateSucceeded"
},
null,
new{
id = "form-" + item.Id
}
)){
@Html.TextBoxFor(m => item.Quantity)
@Html.ValidationSummary()
// This form gets submitted through javascript after a blur on quantity textfield
}
}