4

jQuery を使用して、ユーザー向けのタグ付けインターフェイスを作成したいと考えています。StackOverflow のユーザーが質問の種類にタグを追加する方法と同様です。jQueryとtagitを使用して動作させています:

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

ライブラリの新しい場所:

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

問題は、ユーザーがフォームの別の部分にエラーがあり、送信をクリックすると、エラー メッセージが表示されてフォームがリロードされ、すべてのタグが失われることです。Djangoでタグ付けする簡単な方法はありますか?

[編集]

以下のヘイルウッドの回答に基づいてこれを試してみてください...

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

ただし、ページをロードすると、その特定のタグがロードされませんか? ulタグがクリアされ、他の情報が読み込まれているようです。ページを読み込んでも表示されません。

私も以下のように試しました:

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

この方法を試してみると、一瞬表示されてから消えます...

[編集2]

私の問題の解決策を見つけました。Hailwood が示唆したように、プログラムでli以下のように を作成できます。

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

私にとってうまくいかなかった理由は、初期値があったためです:

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

私にとっての問題は、オンロードで、すべて消えていたことです。この理由は、 のためですfill。as per:に置き換えるfillと、機能します。add$(".tags").tagit("add", data);

4

2 に答える 2

4

あなたが言及した tagit プラグインの作成者として、私はあなたを助けることができると思います.

フォームの一部として使用しているように見えます。送信をクリックすると、サーバー側でフォームが検証されます。エラーが発生した場合は、フォームの値を使用してページをリロードしますか?

非表示の選択オプション ( ) を有効にすることをお勧めしますselect: true

フォームが送信されると、選択したタグのリストが表示されます。

次に、ページをリロードする場合は、タグを<li>s としてリストにロードし直します。

(私はPythonを知らないので、以下は疑似コードであることに注意してください)

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

*オプションにタグを渡すこともできinitialTagsますが、それにはjavascriptを出力する必要があり、上記の方法よりもきれいではありません:)

于 2012-07-29T11:31:53.593 に答える
0

jQuerySelect2のタグ付けのサポートを確認する必要があります。

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

于 2012-07-29T12:23:28.373 に答える