【问题标题】:jquery validation: get remote validation running again without changing the value of concerned fieldjquery 验证:在不更改相关字段的值的情况下再次运行远程验证
【发布时间】:2011-04-08 08:26:43
【问题描述】:

我有一个这样的远程验证器设置

remote: {
  type: "POST",
  url: "/some/url",
  data: {
    value: function() {
      return $("#field").val();
    },
    bypass: function() {
      if ($("input:radio[name=toggleBypass]:checked").val() == "yes"){
        return "yes";
      }
      return "no";
    }
  }
}

如果 bypass 为“yes”,则 ajax 总是返回 true。

它适用于模糊和提交,但如果我重置单选按钮值然后提交,它不会重新验证。

例如,

  1. 将 toggleBypass 设置为“是”
  2. 将字段设置为无效值
  3. 运行 $("form").validate().element("#field")。由于绕过是“是”,它通过了。
  4. 将 toggleBypass 设置为“否”
  5. 运行 $("form").validate().element("#field")。它通过了,因为遥控器没有重新提交。

有什么方法可以让它正常工作吗?

【问题讨论】:

    标签: javascript jquery jquery-validate


    【解决方案1】:

    如果您查看 jquery.validate.js 中的第 897 行,您会看到一个优化:

    if ( previous.old !== value ) {

    如果字段的值未更改,此行将阻止新的验证。而且由于您使用的是validate().element(),它只检查该字段,而不是整个表单,因此它不会检测到 toggleBypass 的变化。

    要么从 jquery.validate 源中删除此检查,要么检查整个表单,而不仅仅是该字段。

    【讨论】:

    • 感谢您的帮助。我明天回去工作时试试这个。
    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多