【问题标题】:jQuery unobtrusive validation ignores data-val-required message in MVC3jQuery 不显眼的验证忽略 MVC3 中的 data-val-required 消息
【发布时间】:2012-06-14 16:26:03
【问题描述】:

我已经使用here 描述的方法来本地化我的数据注释消息,基本上它在普通形式的帖子中工作正常。我也可以在客户端看到本地化的验证消息。

但是,当我的部分视图包含要验证的输入字段并使用 ajax 调用加载时,就会出现问题。出于某种原因,我得到了默认验证消息(“此字段是必需的”),而不是在元素的 data-val-required 属性中设置的本地化消息。

我已验证以下内容:
1. 我已经包含了“jquery.validate.min.js”和“jquery.validate.unobtrusive.min.js”。
2. 我检查了 ajax 响应,它确实包含带有本地化消息的 data-val-required 属性。

我已经尝试了以下解决方案:
1. 我尝试将 ajax 响应(不起作用)解析为 $.validator.unobtrusive.parse('form')
2. 解析动态内容以进行验证,如here 所述。还是没有解决办法。

我有一个紧迫的截止日期,这让我很困扰。

【问题讨论】:

  • 您是在添加部分内容后立即尝试验证,还是动态内容与表单的其余部分一起正常提交?
  • 动态内容与表单的其余部分正常提交。
  • 终于有了突破。我的页面中有两种形式,一种在索引页面中,一种在部分页面中。单击表单提交的按钮位于索引页面上。我移动了部分页面中的按钮,使其位于部分页面的表单元素内,瞧!它工作得很好。虽然问题解决了,但不知道是什么原因造成的,移动最里面的按钮是如何解决的?我的问题已解决,但如果有人可以帮助我了解原因,我可以将其标记为答案并关闭此问题。
  • 生成的标记(来自加载局部视图)是否在表单中创建表单?如果是这样,那就是问题所在。一个表单中不能有另一个表单。
  • 是的,标记包含表单中的表单。具有验证属性的元素在内部形式中,而按钮在外部形式中。我假设它正在提交外部表单。为什么内部形式会产生问题?

标签: jquery asp.net-mvc-3 data-annotations unobtrusive-validation


【解决方案1】:

我想你已经尝试过了:stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements - Steve Lamb 的回答对我帮助最大。

基本上,每当您更改页面内容时,您都需要重新初始化验证器,因为验证代码会构建一个列表来跟踪它只需要在页面加载时验证一次的控件...

我似乎还必须添加一些额外的代码才能通过并确保输入正确命名。 请稍等,我会挖掘代码。 - 嗯,抱歉,该代码是客户端应用程序的一部分,我无法发布。不太确定它是否会有所作为......

【讨论】:

  • 谢谢 Tieson,我已经厌倦了。但是,我不小心解决了它。在问题下方阅读我的评论。仍然很困惑问题是什么。
【解决方案2】:

以防万一有人提出这个问题,如文档所述,您的字段必须具有name 属性:

强制:所有需要验证的输入元素都需要一个“名称”属性,如果没有这个,插件将无法工作。 'name' 属性对于表单也必须是唯一的,因为这是插件跟踪所有输入元素的方式。但是,每组单选或复选框元素将共享相同的“名称”,因为此分组的值表示表单数据的单个片段。

Source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-29
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多