我已经看过@ Sparky的回答并向this提问jsFiddle,在我看来我有正确的html和javascript,但浏览器仍在提交表单。
我有这个HTML:
@using (Html.BeginForm("Create", "ClientWarehouseRequest", FormMethod.Post, new { @class = "form-horizontal" }))
{
<!-- many form inputs here -->
<div class="buttons-wrap">
<input type="hidden" name="SubmitButtonValue" id="SubmitButtonValue" />
<input class="k-button" type="submit" value="Post" name="SubmitButton" />
@Html.ActionLink("Cancel", "Index", controllerName: null, routeValues: null, htmlAttributes: new { @class = "k-button", style = "vertical-align: bottom;" })
<input class="k-button" type="submit" value="Save" name="SubmitButton" />
</div>
}
使用此javascript:
$(document).ready(function () {
$('form').validate({
submitHandler: function (form) {
var postingWindow = $("#postingDialogWindow").data("kendoWindow");
postingWindow.title("Posting Client Request...");
postingWindow.open();
$.ajax({
url: form.action,
type: form.method,
data: $(form).serialize()
})
.success(function (result) {
if (result.success) {
window.alerts.info(result.message, true);
window.location.replace(result.redirecturl);
}
else {
window.alerts.error(result.error);
}
})
.fail(function (result) {
//window.alerts.error(result);
var result = $.parseJSON(result.responseText);
window.alerts.error(result.errorMessage);
})
.always(function (data) {
postingWindow.close();
});
return false;
},
invalidHandler: function (event, validator) {
alert('invalid');
}
});
}
然而,当我点击提交按钮时,浏览器正在将表单作为完整的回发提交。我需要通过validate()函数内的$ .ajax调用来提交表单。我错过了什么?