mvc3 + jQuery 验证:如何捕获错误或正常事件
Posted
技术标签:
【中文标题】mvc3 + jQuery 验证:如何捕获错误或正常事件【英文标题】:mvc3 + jQuery validation: how to catch error or ok events 【发布时间】:2012-10-01 06:49:27 【问题描述】:我正在使用 MVC3 C#,并且我有一个带有一些数据注释(验证规则)的模型
在我的 view.cshtml 文件中,我有一个包含一些复杂逻辑的表单,它使用现有元素上的绝对坐标绘制一些图形。
当用户提交带有不正确数据的表单时,jQuery 检查会使 @Html.ValidationMessageFor(...) 的某些字段可见 现在用户可以更正数据 - 并立即消除 @Html.ValidationMessageFor(...) 消息。
所以,这个显示/隐藏移动了其他页面元素,这个移动打破了我的绝对定位,我需要调用重绘函数( CorrectSizesAndPos(); )。
我怎样才能捕捉到这些讨厌的高光/非高光事件?
现在:
我将 id 添加到我的表单中:
@using (Html.BeginForm("Action1", "Controller1", FormMethod.Post,
new id="VMCreateForm"))
我添加事件以检查提交时的数据:
$("#VMCreateForm").submit(function ()
if (true == $("#VMCreateForm").valid())
$(":disabled").removeAttr('disabled'); //<-- I need this to transfer data to server from some disabled fields...
CorrectSizesAndPos();
return true;
);
如果表单不好,我可以在提交前发现:
$(document).ready(function ()
$("#VMCreateForm").bind('invalid-form.validate',
function (form, validator)
console.log('invalid-form.validate');
CorrectSizesAndPos();
);
);
我尝试在 $("#VMCreateForm").validate( .. ) 中添加一些事件,但它们没有被调用...
当不显眼的验证显示或隐藏验证消息时,我如何捕捉?
【问题讨论】:
【参考方案1】:我做了几次测试,终于找到了适合我的案例的解决方案。可能它不是最佳的,但它是:
$(document).ready(function ()
var existingValdiation = $("#VMCreateForm").validate();
var Original_errorPlacement = existingValdiation.settings.errorPlacement;
var Original_success = existingValdiation.settings.success;
existingValdiation.settings.errorPlacement = function (error, element)
Original_errorPlacement(error, element);
CorrectSizesAndPos();
//console.log('errorPlacement'); //for test
;
existingValdiation.settings.success = function (label)
Original_success(label);
CorrectSizesAndPos();
//console.log('success'); //for test
;
)
【讨论】:
以上是关于mvc3 + jQuery 验证:如何捕获错误或正常事件的主要内容,如果未能解决你的问题,请参考以下文章
使用 MVC3 Razor 在 Jquery 中应用图像扩展验证
未捕获的类型错误:无法使用 jQuery 验证读取未定义的属性“调用”