18 Stimmen

Jquery - wie man errorPlacement für ein spezifisches Element verwendet?

Ich habe ein Kontrollkästchen und ein Text folgt, wie;
[checkbox] Ich stimme zu

Wenn das Kontrollkästchen beim Absenden nicht angeklickt ist, wird die aktuelle Art und Weise, wie ich die Fehlermeldung angezeigt habe, angezeigt (ich verwende errorElement: "div");

[checkbox]
Dieses Feld ist erforderlich.
Ich stimme zu**

Ich würde eher mögen;
[checkbox] Ich stimme zu
Dieses Feld ist erforderlich

Hast du eine Idee, wie man das erledigen kann?.

Der HTML-Umhang für die betroffenen Kontrollkästchen- und Textelemente sieht so aus;
[div] [checkbox] Ich stimme zu [/div] [div][/div]

Ich habe errorPlacment: wie folgt versucht in der Hoffnung, es nur für dieses Element anzuwenden;

...            
messages: {
    usage_terms: {
        required: "Muss den Nutzungsbedingungen zustimmen.",
    //errorElement: "div"
    errorPlacement: function(error, element) {
        error.appendTo( element.parent("div").next("div") );
        }
    }
}
...

Es hat nicht funktioniert. Irgendwelche Ideen?.

40voto

Nick Craver Punkte 609016

errorPlacement befindet sich nicht unter Nachrichten (als Option), es handelt sich um eine globale Option. Stattdessen sollte es so aussehen:

messages: {
  usage_terms: "Muss den Nutzungsbedingungen zustimmen."
}
errorPlacement: function(error, element) {
  if(element.attr("name") == "usage_terms") {
    error.appendTo( element.parent("div").next("div") );
  } else {
    error.insertAfter(element);
  }
}

Hier prüfen wir nur den Elementnamen, um zu entscheiden, wo es hingeht. Sie könnten jedoch eine weitere Prüfung durchführen, indem Sie beispielsweise allen, die sich so verhalten, eine Klasse geben und element.hasClass("placeAfter") durchführen.

0voto

Datei html

Frage text 008 zum Beispiel

Frage text 009 zum Beispiel

    Text 91

    Text 92

    Text 93

    Text 94

    Text 95

    Text 96

jquery validate Datei

errorPlacement: function(error, element) {
    var elementForm = "", containerError = "";
    offset = element.offset();
    elementForm = element.attr("name");
    containerError = "#" + elementForm + "error";
    error.prependTo(containerError);
    error.addClass('message');
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X