我正在写一个MVC3网站,我正在使用JQuery不显眼的验证来验证我的表单。我在应用程序中构建了一个表单框架,每当我单击一个表单字段时,它就会显示一个简洁的“帮助”弹出窗口。一切都在这个领域有效,我很高兴。
问题是我没有足够的空间用于显示除了每个表单之外的表单字段验证消息,如果我将它们放在表单字段下面,则调整大小很难看。这是典型的表单字段的样子:
当我点击该字段时,会显示以下内容:
验证发生时,会发生以下情况:
我的解决方案是在验证发生时简单地隐藏帮助文本(我使用共享函数来执行此操作,我们称之为“hideDescriptions()”)。站点中的每个表单都使用相同的框架,因此我希望能够在任何时候发生不显眼的验证时调用hideDescriptions()。
我的javascript被拆分为多个文件,例如:
/ Review / Create / - 使用createReview.js / Review / Read / - 使用readReview.js
它们都包括“shared.js”。我希望能够在shared.js文件中扩展jquery unobtrusive验证插件,并一次性将它应用到站点中的每个表单...但我有点迷失。就我而言:
$("form").validate({
invalidHandler: function (form, validator) {
hideDescriptions();
}
});
但我知道这不起作用。我假设不显眼的验证器默认情况下将验证器附加到所有表单,看起来好像我不需要自己附加它?
如果表单无效,有没有办法可以扩展不显眼的验证来执行泛型回调?
答案 0 :(得分:2)
花了20分钟写完之后,我发现了link,这几乎解决了我的问题。这是我使用的代码:
$("form").bind("invalid-form.validate", function () {
hideDescriptions();
});
然而,当用户再次点击该字段时,它几乎无用,显示说明!
理查德也提出了一个有效的观点 - 我将重新评估我的表单的工作方式:)
答案 1 :(得分:1)
当人们犯错误时,隐藏描述似乎不合逻辑,因为他们应该做的事情没有更多的帮助..
您可以指定错误标签的位置,例如,您可以将错误标签放在输入字段的标题旁边,并在其间放置一个短划线。这样您就可以保留说明并且不会重叠。