2012-12-19 12 views
8

Seit der Veröffentlichung der JQuery-Validierungs-Plugin-Version 1.9.0 wurden ausgeblendete Felder automatisch aus den Validierungsprüfungen entfernt [source].JQuery-Validierung: Überprüfen ausgeblendeter Felder

Gemäß der release notes ist der Weg, um dies zu umgehen, indem ignore: [] in der Validierungsfunktion gesetzt.

Mit Version 1.10.0 kann ich dies nicht für Eingabefelder, die mit oder visibility: hidden ausgeblendet sind, funktionieren.

ist meine Validierung mithilfe von Klassen durchgeführt (zB class="required") und die Funktion Validierung ist recht einfach:

JQuery

$("form").validate({ 
    ignore: [], 
    errorPlacement: function(error, element) { 
     error.appendTo($('#error-message')) 
    }, 
    invalidHandler: function() { 
     //do something 
    }, 
    submitHandler: function() { 
     //do something else 
    } 
}); 

Arbeitsbeispiel: http://jsfiddle.net/fbCVY/

Kann jeder Punkt heraus, wo ich falsch liege?

+0

Wenn ich die jsfiddle in Firefox 17.0.1 ausführen, zeigt die Schaltfläche "submit" immer "no error" in der Konsole - auch nach dem Entfernen der CSS, die die Eingabefelder verbirgt. Fehle ich etwas oder ist das Gerät nicht wirklich eingerichtet, um die Validierung zu versagen? – TLS

Antwort

6

Ich denke, Sie müssen sowohl ein eindeutiges id als auch ein eindeutiges name Attribut für jeden der input Tags zur Verfügung stellen, damit das Validierungs-Plugin die Felder finden und unterscheiden kann. Die beiden "ausgeblendeten" Felder sind nicht fehlgeschlagen, da das erste Feld im Formular übergeben wird und dieses Ergebnis für die anderen beiden Felder verwendet wird.

+1

[Hier ist eine Arbeit jsfiddle] (http://jsfiddle.net/fbCVY/1/) – TLS

+0

+1 genial - scheint ein bisschen seltsam, dass sie auf IDs angewiesen sind. Danke für die Lösung! –

+2

es ist nur Name die Eingänge brauchen –

2

Versuchen mit Regeln:

$("form").validate({ 
    ignore: "", 
    rules: { 
     name: ["aa", "ee"] 
    }, 
    errorPlacement: function(error, element) { 
     error.appendTo($('#error-message')) 
    }, 
    invalidHandler: function() { 
     //do something 
    }, 
    submitHandler: function() { 
     //do something else 
    } 
}); 

Jsfiddle

Grüße.

+0

Danke - es ist nicht wirklich die Regeln, die ich brauche, ich war das Attribut 'name' auslassen, die das Problem verursacht (so funktioniert Ihre jsfiddle, aber es ist, weil Sie das' name' Attribut hinzugefügt zur Eingabe, anstatt die Regeln zu benötigen): http://jsfiddle.net/fbCVY/14/ –

+1

Ok, das Attribut "Name" löst das. –

Verwandte Themen