Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery验证:在不更改相关字段的值的情况下重新运行远程验证_Javascript_Jquery_Jquery Validate - Fatal编程技术网

Javascript jquery验证:在不更改相关字段的值的情况下重新运行远程验证

Javascript jquery验证:在不更改相关字段的值的情况下重新运行远程验证,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我有一个这样的远程验证程序设置 remote: { type: "POST", url: "/some/url", data: { value: function() { return $("#field").val(); }, bypass: function() { if ($("input:radio[name=toggleBypass]:checked").val() == "yes"){ return "yes

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

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()元素(“字段”)。既然旁路是“是”,它就通过了
  • 将toggleBypass设置为“否”
  • 运行$(“form”).validate()元素(“字段”)。它通过了,因为远程服务器没有重新提交

  • 您知道如何让它正常工作吗?

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

    if(previous.old!==value){

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


    请从jquery.validate源代码中删除此检查,或者检查整个表单,而不仅仅是该字段。

    谢谢您的帮助。我明天回去工作时会尝试此操作。