我认为我正在覆盖表单正确提交。但是,//HIDE FORM
事件中的done
不是@using(Html.BeginForm("Action", "Controller", FormMethod.Post, new{})
{
//Form inputs
<button type="submit" class="button-submit">Submit</button>
}
,而是获取POST的json字符串(如果提交按钮位于表单之外,它可以正常工作,但我在表单中需要它。)
表格
$('.button-submit').bind('submit', function(e) {
e.preventDefault();
if (formIsValid) {
$.ajax({
url: 'controller/action',
type: 'POST',
data: form.serialize()
}).done(function(data) {
if (data.success) {
//HIDE FORM
} else {
//error
}
});
}
return false;
});
脚本(在init()中):
[HttpPost]
public JsonResult Action(Model model)
{
if (ModelState.IsValid)
{
//Code...
}
return Json(model);
}
在控制器
中var active = $('nav ul li');
active.focus(function() {
$(this).children('ul').toggleClass('active');
})
如何在表单中保留提交按钮,使用ajax帖子,然后返回隐藏表单并保持在同一页面上?
答案 0 :(得分:3)
变化:
$('.button-submit').bind('submit', function(e) {
要:
$('.button-submit').on('click', function(e) {
绑定不起作用的原因是您将按钮绑定到提交事件。如果您想使用提交事件,则需要将其绑定到表单才能正常工作。
当用户尝试提交表单时,会将提交事件发送给元素。它只能附加到
<form>
元素
$('form').on('submit', function(e) {
这也可行。但请注意,自jQuery 1.7起,使用on
代替bind
是最佳做法。