关于javascript:jquery验证:无需更改关注字段的值即可再次运行远程验证

jquery validation: get remote validation running again without changing the value of concerned field

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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。

它可以在模糊和提交时工作,但是如果我重置单选按钮的值然后提交,则不会重新验证。

例如,

  • 将toggleBypass设置为"是"
  • 将字段设置为无效值
  • 运行$(" form ")。validate()。element("#field ")。由于旁路为"是",因此可以通过。
  • 将toggleBypass设置为" no "
  • 运行$(" form ")。validate()。element("#field ")。它通过了,因为遥控器没有重新提交。
  • 有什么想法可以使它正常工作吗?


    如果您在jquery.validate.js中查看第897行,则会看到优化:

    if ( previous.old !== value ) {

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

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