最小最大价格范围验证不适用于jquery.validate.js

Ark*_*rka 10 javascript validation jquery jquery-validate

表单验证我正在使用https://jqueryvalidation.org.我已经通过depends属性实现了自定义验证规则.

以下是验证错误规则:

  • 如果未选中两个价格框,则不会显示错误.

  • 如果选择了一个价格框(两个中的一个),则验证错误将显示用户需要同时选择两个.

  • 如果两者都被选中,那么最大价格值必须大于最低价格.

请在下面找到我的代码:

在我的代码中,每个条件都令人满意,但最后一条规则意味着最高价格总是大于最低价格不起作用.它的检查是正确的,但验证不会触发.

这里是jsfiddle链接

$(document).ready(function() {
    $("#form1").validate({
        debug: true,
        onkeyup: false,
        onfocusout: false,
        onclick: false,
        rules: {
            minrange: {
                required: {
                    depends: function() {
                        var min_range = $("#min-range").find(':selected').val(),
                            max_range = $("#max-range").find(':selected').val();
                        if (min_range == "" && max_range == "") {
                            return false;
                        } else if (min_range != "" && max_range == "") {
                            return true;
                        } else if (min_range == "" && max_range != "") {
                            return true;
                        } else if (parseInt(max_range) < parseInt(min_range)) {
                            return true;
                        } else {
                            return false;
                        }
                    }
                }
            },
            maxrange: {
                required: {
                    depends: function() {
                        var min_range = $("#min-range").find(':selected').val(),
                            max_range = $("#max-range").find(':selected').val();
                        if (min_range == "" && max_range == "") {
                            return false;
                        } else if (min_range != "" && max_range == "") {
                            return true;
                        } else if (min_range == "" && max_range != "") {
                            return true;
                        } else if (parseInt(max_range) < parseInt(min_range)) {
                            return true;
                        } else {
                            return false;
                        }
                    }
                }
            },
        },
        submitHandler: function(formName, event) {
            alert("sucess");
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这里是jsfiddle链接

cas*_*sln 1

您可以通过使用最大最小规则来做到这一点。这是小提琴

代码:

$(document).ready(function() {
  var $min_range = $("#min-range"),
      $max_range = $("#max-range");

  $("#form1").validate({
    debug: true,
    onkeyup: false,
    onfocusout: false,
    onclick: false,
    rules: {
      minrange: {
        required: function() {
            return !($min_range.val() === "" && $max_range.val() === "");
        },
        max: function() {
          if ($max_range.val() !== "") {
            return $max_range.val();
          }
        }
      },
      maxrange: {
        required: function() {
            return !($min_range.val() === "" && $max_range.val() === "");
        },
        min: function() {
          if ($min_range.val() !== "") {
            return $min_range.val();
          }
        }
      }
    },
    submitHandler: function(formName, event) {
      alert("sucess");
    }
  });
});
Run Code Online (Sandbox Code Playgroud)