将jqueryvalidation附加到替换元素

我有一个带有下拉列表的aspnet mvc表单,我用一个jquerycombobox代替。

原始的dropdownlist有一个客户端validation设置 – 使用不显眼的lib和标准的jqueryvalidation – ,我希望这个validation附加到combobox。

作为combobox生成的一部分,名称将从滴管中移除,而是设置在隐藏字段上。 我面临的问题是,当combobox无效时(在这种情况下为空),validation消息不会显示在combobox(隐藏字段)中。

有没有办法连接隐藏字段来validation下拉列表会有什么? 我尝试了几件事:

  1. 同时将隐藏字段的名称设置为下拉列表名称 – 复制data-val和data-val-required属性,但我没有运气。 我意识到,由于隐藏字段是动态添加的,validation器不会选择它,但是当validation通过名称(afaik)选择时它可能正常工作。 我试图重新解析表单,以便它拾取隐藏的字段,但原始规则仍然存在 – 这似乎不起作用。
  2. 我也尝试过不使用隐藏字段并将validation留在原始滴管上 – 当combobox中的项目设置时,也会在滴管中设置值。 这也不起作用 – 我认为因为下拉是隐藏的,因为如果我离开它显示validation工作正常。

我正在使用bootstrap jquerycombobox ,我稍微修改了它以使用选项组

有人可以提供一些帮助吗?

谢谢

您正在使用的插件隐藏输入并将其替换为自己的html。 默认情况下,jQueryvalidation不会validation隐藏的表单控件,但您可以通过修改validation程序来覆盖此行为

 $.validator.setDefaults({ ignore: [] }); 

请注意,如果您有其他不需要validation的隐藏元素,则可以为元素指定类名

 $.validator.setDefaults({ ignore: ":hidden:not('.combobox')" }); 

注意:确保此脚本位于$(document.ready)函数之外。