2016-04-26 6 views
0

Ich habe die folgende Eingabe:Hinzufügen und Entfernen von HTML basiert auf Bedingung

<input type="text" name="country" /> 

Wenn eine Variable errornicht null ist, werde ich die Nachricht, nachdem es zeigen:

<input type="text" name="country" /> 
<span class="error">Some error message</span> 

Wenn die Variable errorist null Ich muss die Nachricht entfernen.

So habe ich die folgende, wobei element die Eingang tag:

if (error != null) { 
    var message = element.next("span.error"); 
    if (message == null) 
    element.after("<span class='error'>" + error + "</span>"); 
    else 
    error.text(error); 
} else { 
    element.next("span.error").remove(); 
} 

Jedoch wird die Nachricht nicht hinzugefügt, wenn Fehler nicht null ist.

Was fehlt mir? Und gibt es eine Möglichkeit, meinen Code zu verbessern?

+3

Was den Wert von 'error' setzt? Sie müssen das Ausblenden/Anzeigen durchführen, wenn diese Variable gesetzt ist. –

+0

Ist Element ein Jquery-Objekt? – Konst

+0

hast du versucht element.after ('' + error + ''); – Rajdeep

Antwort

1

Per Kommentare oben, sollte Ihr Code funktioniert, wenn wie folgt überarbeitet, das Element unter der Annahme, ein jQuery-Objekt:

if (error != null) { 
    var message = element.next("span.error"); 
    if (message.length == 0) 
     element.after("<span class='error'>" + error + "</span>"); 
    else 
     message.text(error); 
} else { 
    element.next("span.error").remove(); 
} 
1

Ein einfacher Weg, dies zu tun:

if (error !== null) { 
    $("span.error").text(error).show();   
} else { 
    $("span.error").hide(); 
} 

In dem obigen Beispiel werden Sie mit der Fehlerspanne Elemente auf der Seite beginnen, aber hat es versteckt.

<span class="error" style="display:none"></span> 

Das gesagt, ich kann zumindest eine Sache mit Ihrem Code falsch sehen. In dieser Zeile

error.text(error); 

Ich glaube, Sie

message.text(error); 

auch gemeint ist das Element eine Variable aus einem jQuery-Selektor erstellt? Wenn es sich nur um einen Verweis auf ein DOM-Element und nicht auf ein jquery-Objekt handelt, funktioniert Ihr Code nicht.

+0

Zunächst habe ich nicht die span.error im Markup ... Also ich nehme an, dass Ihr Code nicht funktioniert, oder? –

+0

Ich muss zuerst, in Javascript, eine span.error nach der Eingabe hinzufügen ... Ich werde viele Eingänge haben, so muss ich die Spanne nach –

+0

beziehen Wenn die Spanne nicht dort anfänglich ist, wird der obige Code nicht funktionieren . Wenn Sie, wie Sie sagen, dynamisch Fehlerelemente neben einer beliebigen Anzahl von Eingaben hinzufügen möchten, ist Ihre Methode möglicherweise besser. Ein weiterer Fehler in Ihrem Code ist, dass die Methode .next() ein Array zurückgibt. Sie überprüfen es gegen null, was niemals wahr sein wird. Wenn Sie es gegen Länge> 0 überprüfen, dann glaube ich, dass das funktioniert. – TheEllis

Verwandte Themen