2009-08-17 9 views
0

Ich benutze xVal combind mit dem Plugin jquery.validate, bin aber auf ein kleines Problem gestoßen, da es Validierungsnachrichten in einer bestimmten Instanz zweimal veröffentlicht. Ich denke, dieser Bug sollte ziemlich einfach mit etwas cleverem jQuery in der Platzierung der Fehlermeldung behoben werden.Wie überprüfe ich, ob ein Element ein anderes Element in jQuery enthält?

Ich versuche einen Weg zu finden, zu sehen, ob eine ul bereits eine li enthält mit etwas Text drin.

errorPlacement: function(error, element) { 
    $("ul.errors:not(:contains(" + error + "))").append(error); 
} 

Ich dachte, etwas wie oben funktioniert vielleicht, aber nicht so viel Glück. error.toString() funktioniert auch nicht.

Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Nicht hier, dass Plugin mit, ich kann nicht sagen, was die entsprechende Eigenschaft ist es, den Fehlertext zu erhalten, aber Sie können Firebug verwenden, um einen console.log von error und sehen Sie zu tun, was es ist.

Sie müssen auch Anführungszeichen um die Zeichenfolge setzen.

$("ul.errors:not(:contains('" + errorString + "'))") 

... und vergessen Sie nicht, für alle einfachen Anführungszeichen in der Fehlermeldung zu entkommen!

+0

Ja, ich habe die Antwort jetzt erkannt und geändert. :) – nickf

1

Geben Sie einen Blick auf die :has Selektor:

$("ul:has(li:contains('" + error + "'))") 

Die obige Selektor die UL Elemente auswählen wird, die ein LI Element, das den error Text enthält.

0

Was ist error in Ihrem Code?
Zuerst bezeichnen Sie es als eine Zeichenfolge :contains(" + error + "), aber Sie bezeichnen es als ein Element - .append(error);.
Wenn dies ein Element ist, versuchen Sie, seinen Text zu erhalten, indem Sie $(error).text() verwenden, und suchen Sie nach dem Text in der UL.