使用jQuery Validate在某些特定字段上进行onfocusout

时间:2016-03-24 12:03:57

标签: javascript jquery jquery-validate

我正在使用jQuery Validate插件来验证我的表单。我有一对出发地和目的地城市以及我的表格中的一对开始和结束日期。我希望onfocusout函数只在机场字段上工作,因为它们在两者中都有相同的代码。

我的代码如下......

$(function () {
    var validator = $("#testForm").validate({
        errorClass: "errorMsg",
        errorElement: "span",
        rules: {
            fromAirport: {
                "required": true,
                "onfocusout": true
            },
            toAirport: {
                "required": true,
                "onfocusout": true
            },
            fromDate: {
                "required": true,
                "onfocusout": false
            }
            toDate: {
                "required": true,
                "onfocusout": false
            }
        },
        messages: {
            fromAirport: {
                "required": "fromAirportis required!"
            },
            toAirport: {
                "required": "toAirportis required!"
            }
            fromDate: {
                "required": "fromDateis required!"
            },
            toDate: {
                "required": "toDate is required!"
            },
        },
        onfocusout: function(el) {
            if (!this.checkable(el)){
                this.element(el);
            }
        },
        submitHandler: function (form) {
        }
    });
});

jsFiddle:https://jsfiddle.net/4yegctz5/1/

1 个答案:

答案 0 :(得分:3)

  1. 关于此代码...

    onfocusout: function(el) {
        if (!this.checkable(el)){
            this.element(el);
        }
    },
    
  2. 什么是checkable?有no such thing represented in this plugin

    1. 关于此代码...

      rules: {
          fromAirport: {
              "required": true,
              "onfocusout": true // <- No such rule
          }, ...
      
    2. "onfocusout"不是规则。它只是一个由&#34;事件&#34;触发的回调函数。在表格内。此外,尽管您可以创建任何自定义规则,但无法创建影响验证事件的自定义规则。

        

      OP的标题:&#34;使用jQuery Validate&#34;

      在某些特定字段上进行onfocusout

      您唯一的解决方案是覆盖onfocusout函数,如下所示。我只是在class事件上要评估的任何字段上放置了一个任意onfocusout。然后,自定义onfocusout函数使用条件来检查此类的元素,然后触发验证。

      onfocusout: function(element) {
          if ($(element).hasClass('ofo')) {
              this.element(element);
          }
      },
      

      DEMO:https://jsfiddle.net/4yegctz5/3/