您好我正在创建一个高级搜索表单,其中使用.submit()事件从jquery调用Ajax.Beginform,Ajax.Beginform返回partialView并更新页面上的div。现在,当我第一次按下搜索按钮一切正常并且页面正确更新但是当我再次按下它时,表单永远不会被提交,并且从不调用控制器动作。当我检查firebug时,我发现每次按下搜索按钮时都会在控制台中显示此错误:
TypeError: $.validator.methods[method] is undefined
result = $.validator.methods[ method ].call( this, val, element, rule.parameters...
这是我的代码:
ajax beginfirm来自View:
@using (Ajax.BeginForm("AdvancedSearch", null, new AjaxOptions { UpdateTargetId = "searchResults", InsertionMode = InsertionMode.Replace }, new { id = "advancedSearchForm"}))
jquery函数:
function submitAdvancedSearch() {
if ($("#Name").val().trim() == "" && $("#LastName").val().trim() == "" && $("#Company").val().trim() == "" ) {
$("#resultError").text("Enter at least one search criteria");
}
else {
$("#resultError").text("");
$("#advancedSearchForm").submit();
$("#advancedClientsSearch").prop("hidden", false);
}
}
这就是按钮:
<input type="button" value="Search" class="btn btn-primary" onclick="submitAdvancedSearch()" />
这是我的捆绑包:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-ui-{version}.js",
"~/Scripts/jquery.unobtrusive-ajax.js",
"~/Scripts/DataTables/jquery.dataTables.js",
"~/Scripts/DataTables/jquery.dataTables.min.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate.js",
"~/Scripts/jquery.validate.unobtrusive.js",
"~/Scripts/jquery.validate*"));
注意:我正在使用MVC5和jQuery JavaScript Library v2.1.3
答案 0 :(得分:0)
如果您不需要自动验证,请删除“〜/ bundles / jqueryval”包。
答案 1 :(得分:0)
好吧我发现它是什么我设置了一些影响功能的验证规则一旦我删除它们现在一切正常
$("#ClientName").rules("add", {
required: true,
messages: {
required: "Client Name can not be empty."
}
});
$("#ClientLastName").rules("add", {
required: true,
messages: {
required: "Client Last Name can not be empty."
}
});
$("#ClientCompanyName").rules("add", {
required: true,
messages: {
required: "Company Name can not be empty."
}
});
我将它们用于另一个页面,但MVC使用默认命名,因此我遇到了一种冲突。