2013-06-15 15 views
8

Mit jQueryValidate versuche ich, ein Feld nur dann erforderlich zu machen, wenn ein anderes spezifisches Feld leer ist. Also, nach der Suche im Internet, habe ich Folgendes getan:jQueryValidate - Erforderliches Feld - hängt nicht ab

rules: { 
    marque: { 
      required: { 
       depends: function() { 
        if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
         return true; 
        } 
        else { 
         return false; 
        } 
       } 
      } 
    } 
} 

Leider funktioniert es nicht. Aber wenn ich das tue:

depends: function() { 
    if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
      alert("Here!"); 
      return true; 
     } 
     else { 
      return false; 
     } 
} 

Die Alarmbox erscheint. Also, mein Test scheint zu funktionieren. Kann mir jemand sagen, was ich falsch gemacht habe? Ich verwende jQuery 1.8.3 und qTip2 mit jQueryValidate. Vielen Dank!

Antwort

9

Ihre Syntax und Verwendung des Plugins stimmt mit dem, was Sie angegeben haben. Sie müssen die Fehlerursache beheben, also versuchen Sie zuerst diese

einfach. Erscheint die Fehlermeldung? Wenn ja, dann versuchen Sie dieses

marque: { 
    required: { 
     depends: function() { return true; /* or false */ } 
    } 
} 
+0

Vielen Dank für Ihre Antwort! Ich tat das und nichts passierte. Vielleicht ist das Problem, dass dieses Feld eine Dropdown-Liste ist. Also habe ich eine persönliche Methode benutzt, die ich in einer anderen Form benutzt habe. Es gibt eine ganze Zahl anstelle von "wahr" oder "falsch" zurück und jetzt funktioniert es. – LancelotKiin

4

Sie sollen wirklich dieses in der Lage sein zu tun, ohne die depends Option, macht nur die Funktion der Arbeit direkt am required Objekt:

rules: { 
    marque: { 
      required: function() { 
       if (($('#add_marque').val() == "Ajouter une marque" && (('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
        return true; 
       } 
       else { 
        return false; 
       } 
      } 
    } 
} 

Siehe Arbeits, einfacheres Beispiel hier : http://jsfiddle.net/ryleyb/3hqH6/1/

+2

Anstelle des 'if ... else' könnte man einfach haben:' return (IF CONDITION HIER) ' – rybo111

+1

Ich wollte die Dinge nicht mit dem Asker verwechseln - das Problem, das ich gelöst habe, war, wie man die 'Regeln' organisiert Objekt. Guter Punkt obwohl! – Ryley

+0

Dies half, eine ähnliche Situation zu lösen, in der ich den spezifischen Wert eines anderen Feldes testen musste, für das die 'abhängige' Eigenschaft passend erschien. Die Methode '.call()' des Validators für die angegebene Funktion hat einen Fehler gefunden, aber die identische Funktion wurde an 'required' übergeben, anstatt an einen Booleschen Wert, der wie erwartet ausgeführt wurde. –

Verwandte Themen