【问题标题】:attaching jquery validation to replacement element将 jquery 验证附加到替换元素
【发布时间】:2015-11-26 10:03:58
【问题描述】:

我有一个带有下拉列表的 aspnet mvc 表单,我将用 jquery 组合框替换它。

原始下拉列表有一个客户端验证集 - 使用不显眼的库和标准 jquery 验证 - ,我希望将此验证附加到组合框。

作为组合框生成的一部分,名称会从放置器中移除,而是设置在隐藏字段中。 我面临的问题是,当组合框(隐藏字段)无效(在这种情况下为空)时,不会显示验证消息。

有什么方法可以像下拉列表那样连接隐藏字段以进行验证? 我尝试了几件事:

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

我正在使用 bootstrap jquery combobox,我对其进行了一些修改以与选项组一起使用

有人可以帮忙吗?

谢谢

【问题讨论】:

  • 您使用的是哪个插件?默认情况下不验证隐藏字段,但您可以使用 $.validator.setDefaults({ ignore: [] }); 覆盖它
  • 您可以强制验证器使用:$.validator.unobtrusive.parse("#" + formid); 解析您的表单(尽管不能 100% 确定是否多次调用它会导致问题,因为我之前在通过 ajax 加载全新表单时使用过)
  • 嗨,斯蒂芬——这会在第一个实例中出现吗?并且需要准备好文档(我想我可能已经看到你的一篇帖子说没关系) - 添加了一个指向组合框插件的链接
  • @stephen - 谢谢你似乎已经做到了

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation


【解决方案1】:

您使用的插件会隐藏输入并用自己的 html 替换它。默认情况下,jQuery 验证不会验证隐藏的表单控件,但您可以通过修改验证器来覆盖此行为

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

请注意,如果您有其他不想验证的隐藏元素,那么您可以给元素一个类名

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

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

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多