作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 ASP.NET MVC3 的非侵入式验证功能,如何在验证运行之前运行一些 JavaScript?由于显而易见的原因,Jquery 的提交处理程序在验证后运行。我可以点击提交按钮,但这看起来不太优雅。有什么建议吗?
编辑
看来我的上述说法是错误的。正如下面指出的,提交处理程序确实在验证之前运行。不幸的是,这并不能解决我的问题。
我修改后的问题:
我需要在表单提交之后、jQuery 验证之前操作表单值。如果我在使用 jQuery 的提交处理程序提交后更改值,那么 jQuery 会验证原始值而不是新值。
最佳答案
提交处理程序在验证后不会运行。它之前运行。尝试一下:
$('form').submit(function () {
alert('validation hasn\'t run yet at this point => see there is no red color over your form input fields yet');
if ($(this).valid()) {
alert('the form is valid');
} else {
alert('the form is not valid');
}
});
<小时/>
更新:
修改问题后我仍然无法重现该问题。这是我的模型:
public class MyModel
{
[Required]
public string Name { get; set; }
}
这是我的观点:
@model MyModel
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm(null, null, FormMethod.Post, new { }))
{
@Html.EditorFor(x => x.Name)
@Html.ValidationMessageFor(x => x.Name)
<input type="submit" value="OK" />
}
<script type="text/javascript">
$('form').submit(function () {
$('#Name').val('some value');
});
</script>
现在,如果我将“名称”字段留空并提交表单,则新值将被正确分配,并且表单将成功提交到服务器,没有任何错误。如果我删除分配新值的 $('#Name').val('some value');
行并尝试使用空字段客户端验证触发器和表单提交表单未提交。
关于jquery - ASP.NET MVC 3 不显眼的验证 - 在验证事件之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6391946/
我是一名优秀的程序员,十分优秀!