2016-03-24 4 views
1

Ich benutze jQuery Validate Plugin, um mein Formular zu validieren. Ich habe ein Paar von Herkunft und Zielstadt und ein Paar von Start- und Enddatum in meiner Form. Ich möchte, dass die Funktion onfocusout nur auf Flughafenfeldern funktioniert, wenn sie in beiden denselben Code haben.onfocusout zu bestimmten Feldern mit jQuery Validieren

unten Mein Code ...

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

Können Sie eine 'DEMO' erstellen? –

+0

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

Antwort

3
  1. diesem Code In Bezug auf ...

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

Wasist? Es gibt no such thing represented in this plugin.

  1. In Bezug auf diesen Code ...

    rules: { 
        fromAirport: { 
         "required": true, 
         "onfocusout": true // <- No such rule 
        }, ... 
    

"onfocusout" keine Regel ist. Es ist nur eine Rückruffunktion, die durch ein "Ereignis" innerhalb des Formulars ausgelöst wird. Darüber hinaus können Sie zwar eine benutzerdefinierte Regel erstellen, Sie können jedoch keine benutzerdefinierte Regel erstellen, die sich auf die Validierungsereignisse auswirkt.


OPs Titel: "onfocusout auf einigen bestimmten Bereichen mit jQuery Validate"

Ihre einzige Lösung wäre sein over-ride die onfocusout Funktion wie folgt. Ich habe einfach einen beliebigen class auf ein beliebiges Feld gelegt, das auf dem onfocusout Ereignis ausgewertet werden soll. Dann verwendet die benutzerdefinierte onfocusout-Funktion eine Bedingung, um das Element für diese Klasse zu überprüfen und anschließend die Validierung auszulösen.

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

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

+0

Einverstanden! Tolle Lösung. – koolhuman