2009-07-07 9 views
6

Ich verwende JQuery Validation. Jetzt möchte ich, dass meine Regeln nur aufgerufen werden, wenn bestimmte Bedingung erfüllt ist, nämlich ich möchte $("#AppSelectField").is(':hidden')false zurückgeben, nur dann rufe ich die Regeln auf.Bedingte Regelüberprüfung in JQuery

Meine Regeln ist wie folgt:

$(function() { 
    $("#RequestLock").validate({ 
     rules: { 
     FloorNum:{ 
     required: true, 
     digits: true 
     }, 


    }, 
    message: { 
    FloorNum: "The floor number must be integer", 

}, 

}); 
}); 

Wie die oben im Abschnitt ändern meine Bedürfnisse zu befriedigen? Hinweis Ich möchte keine eigene benutzerdefinierte Methode für required und digits schreiben.

Antwort

16

Dies sollte es tun:

$(function() { 
    var checkIfFieldVisible = function() { 
     return !$("#AppSelectField").is(':hidden'); 
    }; 

    $("#RequestLock").validate({ 
     rules: { 
      FloorNum: { 
       required: { depends: checkIfFieldVisible }, 
       digits: { depends: checkIfFieldVisible } 
      }, // <-- EXTRA COMMA 
     }, 
     message: { 
      FloorNum: "The floor number must be integer", 
     }, // <-- EXTRA COMMA 
    }); 
}); 

(I markiert einige zusätzliche Kommas Sie auf Ihrem Code haben, da sie IE Drossel machen)

+0

Können wir bestätigen/nicht gesamte Formular Validierung basierend auf bestimmten Werte?. Zum Beispiel habe ich ein verschachteltes Formular mit Speichern/Übergeben-Buttons. Ich möchte nur beim Senden bestätigen. Mein Problem ist, wenn ich die Klasse = "erforderlich" auf jedem Feld habe, da das Formular sehr dynamisch ist. Bitte helfen Sie. – Aanu

+1

Sie brauchen die Funktion nicht einmal, Sie können einfach 'depends = '#AppSelectField: visible'' setzen – forivall