2013-04-24 48 views
1

我无法将回调附加至jquery unobtrusive验证。我想要做的就是在显示字段验证错误时隐藏信息性消息。他们都占据了页面上的相同区域。我无法弄清楚如何将回调附加到show error方法。我有一个工程,如果你调用验证,但错误消息显示之前,即使更改字段被激发。添加回调至不显眼验证的问题显示错误

这是一个jsfiddle演示我的问题。 http://jsfiddle.net/K6NcF/4/

这是仅在调用validate()时才运行的回调函数。

$('#theForm').bind('invalid-form.validate',function(){ 
    $('.info-box').hide(); 
}); 

任何帮助,将不胜感激。

+0

我不是100%确定如何与'unobtrusive'做到这一点,只是用jQuery验证插件,还有一大堆的回调函数,你可以玩小提琴。请参阅文档:http://docs.jquery.com/Plugins/Validation/validate#toptions – Sparky 2013-04-24 16:19:24

+0

我在您的jsFiddle中看到的另一个问题; '

' - 它可能是或不是有效的HTML有一个'ID'开头的数字,但它绝对不是一个好习惯。请参阅:http://stackoverflow.com/a/79022/594235 – Sparky 2013-04-24 16:20:55

+0

是的问题是我不相信我可以使用任何这些回调,因为它们不会导致验证消息显示,而用户正在编辑领域。它试图绑定回调来显示错误,但没有成功。打电话给身份证,尽管这不是问题,但我不知道为什么我的目标是1,但我更新了它。 – 2013-04-24 17:46:00

回答

0

可以使用不显眼这样

// grab a reference to the validator instance 
var v = $('form').validate(); 

// reference the settings property, and the highlight function 
var originalHighlight = v.settings.highlight; 

你可以只覆盖这与你的东西,或者下面的例子显示了一个办法,而不会覆盖添加自己的功能是什么时候访问的亮点和unhighlight回调有。

var v = $('#theForm').validate(); 

var originalHighlight = v.settings.highlight; 
var originalUnHighlight = v.settings.unhighlight; 

v.settings.highlight = function(element, errorClass, validClass) 
{ 
    console.log('doing my stuff here'); 
    $('.info-box').hide(); 
    originalHighlight.call(v, element, errorClass, validClass); 
} 

v.settings.unhighlight = function(element, errorClass, validClass) 
{ 
    console.log('undoing my stuff here'); 
    $('.info-box').show(); 
    originalUnHighlight.call(v, element, errorClass, validClass); 
} 

这里http://jsfiddle.net/K6NcF/8/