【问题标题】:Jquery Unobstrusive validation show errors manually for ValidJquery Unobtrusive 验证手动显示错误为 Valid
【发布时间】:2017-06-26 16:24:57
【问题描述】:

我已使用此处 Here 中的链接和 Here 中的示例手动将错误添加到我的输入中,但是当我在添加错误后尝试$("#myshowErrors").valid() 时,它变成了真的吗?

这是我的代码

var validator = $( "#myshowErrors" ).validate();
validator.showErrors({
  "firstname": "I know that your firstname is Pete, Pete!"
});

我无法使客户端验证失败。我怎样才能让form.valid() 返回false

我不想手动创建form.valid()=false;,我希望通过设置错误来解决这个问题。

【问题讨论】:

  • 您需要更好地向我们展示代码。
  • 点击我的问题中的链接查看代码。
  • 你不应该使用外部链接而不是显示你自己的代码。请点击此链接:stackoverflow.com/help/how-to-ask
  • 同意。我刚刚添加了代码。
  • 相关代码的其余部分在哪里?如果你不关心写一个好问题,没有人可以帮助你。 #myshowErrors 元素在哪里?其余相关的渲染标记在哪里?

标签: jquery-validate unobtrusive-validation


【解决方案1】:

由于您的问题中缺少代码,这完全不清楚,但我认为您可能误解了在哪里附加 the .valid() method

这个方法只被附加到一个代表单个 <form>元素的选择器...

$('#myform').valid();  // triggers validation on the entire form

或任何代表单个表单输入元素的选择器...

$('#myform input[name="myinput"]').valid();  // triggers validation on one input element

.valid()被调用时,对选中的元素触发验证,显示错误信息,该方法将返回truefalse

如果不使用 jQuery .each(),则永远不能将 .valid() 方法附加到表示多个元素或元素集合的选择器。


编辑:

showErrors 仅用于显示现有 错误。您不能通过调用showErrors 使字段“无效”。字段是否有效仅取决于该字段中包含的内容。


您已使用不显眼的验证标记了该问题。由于 jQuery Validation 是通过 Unobtrusive Validation 插件自动处理的,因此您不能调用自己的 .validate() 方法实例。这是因为 Unobtrusive 插件会自动构造和调用.validate()。一旦被调用,插件就被初始化,不能再次调用,所有后续调用总是被忽略。

【讨论】:

  • 所以我的问题是如果我使用 validator.showErrors({ "firstname": "I know that your firstname is Pete, Pete!" });为什么 $('#myform').valid() 会返回 true。如果我使表单中的任何输入无效,我希望它返回 false。
  • @AmteBlessed,因为你在某个地方犯了错误。我无法帮助您,因为我看不到您的代码。
  • @AmteBlessed,我也不知道您为什么认为可以通过调用 showErrors 来“使”字段“无效”。字段是否有效仅取决于该字段中包含的内容。
  • 那么,什么是动态地使字段无效的最佳方法?
  • @AmteBlessed,这是不可能的。字段是否有效/无效仅取决于用户放入的内容,我不知道您为什么需要这样做。现在,如果您想即时更改规则,那就另当别论了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多