Maj*_*jix 5 validation asp.net-mvc unobtrusive-validation jquery-select2
选择转换为Select2的框,不自动与ASP.NET MVC框架中不显眼的验证机制集成.
例如,在包含常规选择框(在模型定义中标记为必需)的表单上,在选择框中未选择任何选项的情况下提交表单将导致选择框的边框和背景呈现偏红色,并使用@ Html.ValidationMessageFor,可以在框旁边显示错误消息(如果有).但是,如果将选择框转换为Select2组件,则所提到的功能都不再起作用.甚至验证错误消息也不会显示出来.
似乎验证错误消息未显示的原因是因为Select2将原始选择框的显示CSS属性更改为none(display:none),我猜这个不显眼的验证脚本不会因为看不见而生成错误消息领域.
任何想法/解决方案?
Juj*_*uba 11
这个问题并不是特定于Select2,而是jQuery不显眼的验证器.
您可以在此答案中突出显示隐藏字段的验证.
$.validator.setDefaults({
ignore: ''
});
Run Code Online (Sandbox Code Playgroud)
正如评论所指出的那样,它在内部的匿名回调函数中不起作用$(document).ready().我不得不把它放在最顶层.
我在 select2 插件上遇到了类似的问题。我不知道您具体使用哪些功能,但根据我的经验,当您在事件中将元素设置为 select2 时document.ready,插件将动态更改元素的一些属性(在您的页面已完成加载 - 通常您会看到 id 和 class 属性与查看源代码时看到的不同)。
如果没有实际看到代码,很难提供更多内容,但这里有一些可以帮助您入门的想法:
首先,显然要确保标题中有指向 select2.css 样式表的链接。
然后,既然您正在谈论表单提交,我建议您检查是否获得完整的回发或通过 AJAX 提交(如果您使用的是 jQueryMobile,则您正在使用 AJAX,除非您在jquerymobile.js 文件或data-ajax="false"在表单属性中设置一个)。您可以只查看为此返回的值Request.IsAjaxRequest()。显然,如果您通过 ajax 提交,您将不会触发 document.ready 事件,并且 select2 将无法正确初始化,您需要找到解决方法。尝试提交后刷新页面,看看是否呈现 select2 组件。
然后我建议检查这些元素,看看它们的行为是否不像您期望的那样,因为您实际上是在尝试使用插件在运行时重新分配的类。你可以调整你的逻辑,或者你可以深入研究 select2 代码本身并改变行为 - 它实际上很好地记录了代码的作用,如果你跳到 Google 组来选择 select2,Igor 通常很快跟进问题。
| 归档时间: |
|
| 查看次数: |
5487 次 |
| 最近记录: |