我有一个包含搜索栏的页面,默认情况下会显示以下项目列表。 每个项目都包含在ajaxform中,以便用户可以更新数量。 客户端验证在页面加载时完全正常,并且需要数量。
只要用户点击搜索,部分的结果就会刷新,我的整个验证就会中断,并且它不再显示验证摘要。
我尝试通过调用$.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
}
}
答案 0 :(得分:2)
onSearchSucceeded
和onUpdateSucceeded
函数对我来说似乎是正确的。在这些函数中,你告诉jQuery不显眼的框架,结果div中存在新的DOM元素,需要注册。
困扰我的是您的代码中的以下注释:
// This form gets submitted through javascript after a blur on quantity textfield
不幸的是,您还没有完全展示如何完成此操作,但以下代码对我来说很好:
$(document).on('blur', 'form[id^="form-"] input[name$="Quantity"]', function () {
$(this).closest('form').submit();
});