使用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’);分配新值并尝试使用空字段客户端验证触发器提交表单的行,并且不提交表单.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。