【发布时间】:2015-04-27 09:28:23
【问题描述】:
我有一个非常简单的时事通讯订阅表格:
@using (Ajax.BeginForm("Register", "Home", new AjaxOptions
{
Confirm = "confirm?",
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "response"
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div id="response">
<div class="form-group">
@Html.TextBoxFor(model => model.Email, new { @class = "form-control", @placeholder = "insert email" })
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="form-group">
<input type="submit" id="submit" value="subscribe" class="btn btn-default" />
</div>
</div>
}
电子邮件字段需要填写,并且是有效的电子邮件。 问题是,一旦我开始在文本框中输入内容,验证就会触发,并且会弹出消息“电子邮件无效”。这很烦人。有没有办法在单击提交按钮时触发验证,而不是每次更改文本框? 谢谢。
【问题讨论】:
-
我无法复制这个问题。我认为您可能需要在问题中包含更多页面代码/内容。
-
您声称的不是默认行为。在控件失去焦点之前,不会触发验证是“惰性”的。如果您重新调整控件的焦点,则验证是“急切的”。您的代码中有其他内容导致此问题
-
实际上,这似乎是默认行为......正如 Prasanth 在下面所说,我一输入就会触发验证,而不是在字段失去焦点时触发。
-
垃圾。您应该阅读documentation 进行确认。你正在做其他事情导致这种行为。
-
好的,这就是我的想法:当字段将其状态更改为无效时,ValidationMessageFor 会触发错误,并且每次字段更改都会发生这种情况。所以我删除了 ValidationMessageFor 并将其替换为 ValidationSummary,它仅在提交点击时触发。谢谢大家的支持。
标签: jquery asp.net-mvc-4 asp.net-ajax unobtrusive-validation