Frage

Ich möchte jQuery verwenden und eine Tagging-Schnittstelle für Benutzer erstellen.Ähnlich wie Benutzer in StackOverflow Tags für die Art der Frage hinzufügen können, die sie stellen.Ich bringe es mit jQuery und Tagit zum Laufen:

http://jquery.webspirited.com/2011/02/jquery-tagit-a-jquery-tagging-plugin/

Neuer Standort für die Bibliothek:

https://github.com/hailwood/jQuery-Tagit

Das Problem besteht darin, dass, wenn der Benutzer beispielsweise einen Fehler in einem anderen Teil des Formulars hat und auf „Senden“ klickt, das Formular mit der Fehlermeldung neu geladen wird und alle Tags verschwunden sind.Gibt es eine einfache Möglichkeit, in Django Tagging zu erhalten?

[BEARBEITEN]

Versuchen Sie dies basierend auf Hailwoods Antwort unten ...

<ul name="event_tag" class="tags">
    <li class="tagit-choice" tagvalue="3">
        Dog
        <a class="tagit-close">x</a>
    </li>
</ul>

Wenn ich jedoch die Seite lade, wird dieses bestimmte Tag nicht geladen?Es scheint, als ob ul Das Tag wird gelöscht und dann werden andere Informationen darin geladen.Ich sehe es nicht, wenn ich die Seite lade.

Ich habe es auch wie folgt versucht:

<ul name="event_tag" class="tags">
    <li data-value="3">Dog</li>
</ul>

Wenn ich es auf diese Weise versuche, erscheint es für eine Sekunde und verschwindet dann ...

[BEARBEITEN 2]

Habe die Lösung für mein Problem gefunden.Wie Hailwood vorgeschlagen hat, können wir das programmgesteuert erstellen liist wie folgt:

<ul name="event_tag" class="tags">
    <li data-value="3">Dog</li>
</ul>

Der Grund, warum es bei mir nicht funktionierte, war, dass ich folgende Anfangswerte hatte:

$.getJSON("ajaxrequest.json", function(data) {
    $(".tags").tagit("fill", data);
});

Das Problem für mich war, dass beim Onload alles verschwand.Der Grund dafür liegt darin, dass fill.Wenn wir ersetzen fill mit add gemäß: $(".tags").tagit("add", data);, dann funktioniert es.

War es hilfreich?

Lösung

Da ich der Ersteller des von Ihnen erwähnten Tagit-Plugins bin, könnte ich Ihnen helfen.

Soweit ich weiß, sieht es so aus, als würden Sie es als Teil eines Formulars verwenden. Wenn Sie auf „Senden“ klicken, validieren Sie das Formular auf der Serverseite. Wenn ein Fehler auftritt, laden Sie die Seite mit den Formularwerten im Schlepptau neu?

Ich würde Ihnen vorschlagen, die ausgeblendete Auswahloption zu aktivieren (select: true).

Wenn das Formular abgeschickt wird, erhalten Sie eine Liste der ausgewählten Tags.

Wenn Sie dann die Seite neu laden, laden Sie die Tags einfach wieder in die Liste als <li>S.

(Bitte beachten Sie, dass ich Python nicht kenne, daher ist das Folgende Pseudocode)

if(form_values.tags)
    for(tag in form_values.tags)
        print '<li data-value=" '+tag.value+' "> '+tag.label+' </li>';
    endfor;
endif;

*Sie können die Tags auch an die übergeben initialTags Option, aber das würde die Ausgabe von Javascript erfordern, was meiner Meinung nach weniger aufgeräumt ist als die obige Methode :)

Andere Tipps

Sie sollten sich die Tagging-Unterstützung von jQuery Select2 ansehen.

http://ivaynberg.github.com/select2/#tags

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top