使用 jquery.validate.unobtrusive.js 和 $("#form").submit() hijax 的 MVC3 不起作用
我有一个基本的表格
@Html.ValidationSummary(true)
using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form" }))
{
<div class="editor-label">
<label for="Name">@Html.LabelFor(model => model.Name)</label>
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
</div>
等等。我的模型正在使用数据注释并且验证已打开。
我使用一些 jquery 来劫持表单:
<script type="text/javascript">
$("form[action='/']").submit(function () {
$.post($(this).attr("action"), $(this).serialize(), function (response) {
$("#contactForm").replaceWith($("#contactForm", response));
});
return false;
});
</script>
如果我正确输入字段并提交,这将起作用。但奇怪的是,如果我在其中一个表单字段中输入无效值,并且验证代码会启动以突出显示我的错误,那么我在上面的 hijaxing 脚本中附加的提交事件函数就会丢失,并且会发生完整的帖子。
关于如何解决这个问题有什么好主意吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为当您向表单添加提交处理程序时,您将覆盖 jquery 验证/数据注释添加的提交处理程序。
为了解决这个问题,您可以添加:
这将确保在进行 POST 之前表单有效。
I think when you add a submit handler to your form you are overwriting the submit handler that the jquery validation / data annotations adds.
To get around this you can add:
This will make sure the form is valid before making the POST.