取消MVC表单提交
本文关键字:表单提交 MVC 取消 | 更新日期: 2023-09-27 18:02:48
我正在使用AJAX提交表单。字段位于被发送到控制器动作的局部视图中。局部视图位于一个div中,当单击主表单上的按钮时,该div会弹出。如果用户完成表单并单击提交按钮,那么更新将在控制器操作中执行,一切正常。但是,如果用户改变了主意,我喜欢添加一个取消按钮来隐藏表单。添加按钮和隐藏表单按预期工作,但是对控制器动作方法的调用仍然发生。我试过使用
e.preventDefault();
但是这行不通。
我已经尝试使用第二个JQuery方法附加到取消id,但我不能得到这个工作。
我的JQuery是这样的:
$('#VisitorModal').on('submit', '#visitorform', function (e) {
var data = $(this).serialize();
var url = '@Url.Action("CreateVisitor", "Meetings")';
var text = $('#title').val() + ' ' + $('#firstname').val() + ' ' + $('#surname').val() + ' (' + $('#company').val() + ')'; // a value from the form that you want as the option text
$.post(url, data, function (response) {
if (response) {
$('#VisitorID').append($('<option></option>').val(response).text(text)).val(response);
} else {
dialog.hide();
}
}).fail(function () {
dialog.hide();
});
dialog.hide();
e.preventDefault();
//return false; // cancel the default submit
});
$('#cancel').on('click', function () {
dialog.hide();
});
这是我的动作方法:
[HttpPost]
public JsonResult CreateVisitor(AppointmentViewModel model)
{
var visitor = new Visitor()
{
Title = model.VisitorTitle,
FirstName = model.VisitorFirstName,
LastName = model.VisitorSurname,
Company = model.VisitorCompany
};
db.Visitors.Add(visitor);
db.SaveChanges();
return Json(visitor.id);
}
并提交&取消按钮:
<div class="form-group">
<div class="col-md-offset-2 col-md-5">
<input type="submit" value="Create" class="btn btn-success" id="submit" />
<input type="button" value="Cancel" class="btn btn-warning" id="cancel" />
</div>
</div>
有没有人有任何建议,可能得到这个工作,因为我希望?
由于您的表单是在初始页面呈现后动态加载的,因此您需要使用事件委托,通过使用.on()
向呈现页面时存在的祖先添加侦听器
$('#cancel').on('click', function () {
dialog.hide();
});
使用$(document).on('click', '#cancel', function () {
dialog.hide();
});
但是将document
替换为第一次生成页面时存在的最接近的祖先