【发布时间】:2015-11-26 10:03:58
【问题描述】:
我有一个带有下拉列表的 aspnet mvc 表单,我将用 jquery 组合框替换它。
原始下拉列表有一个客户端验证集 - 使用不显眼的库和标准 jquery 验证 - ,我希望将此验证附加到组合框。
作为组合框生成的一部分,名称会从放置器中移除,而是设置在隐藏字段中。 我面临的问题是,当组合框(隐藏字段)无效(在这种情况下为空)时,不会显示验证消息。
有什么方法可以像下拉列表那样连接隐藏字段以进行验证? 我尝试了几件事:
- 连同将隐藏字段的名称设置为下拉名称 - 复制 data-val 和 data-val-required 属性,但我没有运气。我意识到,由于隐藏字段是动态添加的,因此验证器不会拾取它,但认为验证按名称选择(afaik)它可能会起作用。我试图重新解析表单,以便它获取隐藏字段,但由于原始规则仍然存在 - 这似乎不起作用。
- 我也尝试过不使用隐藏字段并将验证留在原始滴管上 - 当组合框中的项目设置时,也会在滴管中设置值。这也不起作用 - 我想是因为下拉菜单是隐藏的,因为如果我让它显示验证工作正常。
我正在使用 bootstrap jquery combobox,我对其进行了一些修改以与选项组一起使用
有人可以帮忙吗?
谢谢
【问题讨论】:
-
您使用的是哪个插件?默认情况下不验证隐藏字段,但您可以使用
$.validator.setDefaults({ ignore: [] });覆盖它 -
您可以强制验证器使用:
$.validator.unobtrusive.parse("#" + formid);解析您的表单(尽管不能 100% 确定是否多次调用它会导致问题,因为我之前在通过 ajax 加载全新表单时使用过) -
嗨,斯蒂芬——这会在第一个实例中出现吗?并且需要准备好文档(我想我可能已经看到你的一篇帖子说没关系) - 添加了一个指向组合框插件的链接
-
@stephen - 谢谢你似乎已经做到了
标签: jquery asp.net-mvc jquery-validate unobtrusive-validation