0
我有一個包含搜索欄的頁面,默認情況下它會顯示下面的項目列表。 每個項目都包裝在ajaxform中,以便用戶可以更新數量。 客戶端驗證在頁面加載時效果很好,並且需要數量。ASP.Net MVC - 部分刷新後客戶端驗證會中斷嗎?
只要用戶點擊搜索,並且部分結果被刷新,我的整個驗證就會中斷,並且不再顯示驗證摘要。
我試圖在刷新部分後通過調用$.validator.unobtrusive.parse($("#resultList"));
添加驗證,但它似乎沒有做任何事情。
任何解決方案?
的MainForm
<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
}
}
感謝:
不幸的是,你還沒有確切地顯示這是如何做到的,但下面的代碼工作對我很好對於答案,我更新了我的問題,並添加了提交表單的代碼,我認爲它沒有問題 – aryaxt 2013-03-18 15:03:28
呃,實際上有一個問題。您沒有以* lively *方式訂閱.blur事件,這意味着在第一次AJAX調用之後,您的blur事件不再有效。看看我的例子。我已經使用'.on()'方法來訂閱它,這意味着即使元素還沒有存在或者在DOM中被更新,blur事件也會自動附加到它。 – 2013-03-18 17:00:08
這就是問題,謝謝,請您將其添加到您的答案,以便我可以接受它?謝謝 – aryaxt 2013-03-18 17:56:36