2016-03-24 76 views
1

我正在使用jQuery驗證插件來驗證我的表單。我有一對出發地和目的地城市,以及我的表單中的一對開始和結束日期。我希望onfocusout函數僅在機場領域具有相同的代碼時才能使用。onfocusout使用jQuery的某些特定字段驗證

我下面的代碼...

$(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/

+0

你能創建一個'DEMO'? –

+0

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

回答

3
  1. 對此代碼...

    onfocusout: function(el) { 
        if (!this.checkable(el)){ 
         this.element(el); 
        } 
    }, 
    

什麼是checkable?有no such thing represented in this plugin

  • 對此代碼...

    rules: { 
        fromAirport: { 
         "required": true, 
         "onfocusout": true // <- No such rule 
        }, ... 
    
  • "onfocusout"是不是規則。它只是一個回調函數,由表單中的「事件」觸發。此外,儘管您可以創建任何自定義規則,但無法創建影響驗證事件的自定義規則。


    OP的標題:「onfocusout在使用jQuery驗證一些特定的領域」

    你唯一的解決辦法是過度乘坐onfocusout功能如下。我只是在任何想要在onfocusout事件上評估的字段上放置任意class。然後自定義onfocusout函數使用條件來檢查此類的元素,然後觸發驗證。

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

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

    +0

    同意!好的解決方案 – koolhuman