Вопрос

Я хочу использовать jQuery и создать интерфейс тегов для пользователей.Подобно тому, как пользователи в StackOverflow могут добавлять теги для типа вопроса, который они задают.Я заставляю его работать, используя jQuery и tagit:

http://jquery.webspirited.com/2011/02/jquery-tagit-a-jquery-tagged-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]

Нашёл решение своей проблемы.Как предположил Хейлвуд, программно мы можем создать liкак показано ниже:

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

Причина, по которой это не сработало для меня, заключалась в том, что у меня были начальные значения:

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

Проблема для меня заключалась в том, что при загрузке все исчезало.Причина этого в том, что fill.Когда мы заменим fill с add согласно: $(".tags").tagit("add", data);, тогда это работает.

Это было полезно?

Решение

Будучи создателем упомянутого вами плагина tagit, я думаю, я мог бы вам помочь.

Судя по тому, что я вижу, похоже, что вы используете его как часть формы, и когда вы нажимаете «Отправить», вы проверяете форму на стороне сервера. Если возникает ошибка, вы перезагружаете страницу со значениями формы на буксире?

Я бы посоветовал вам включить опцию скрытого выбора (select: true).

После отправки формы вы получите список выбранных тегов.

Затем, если вы перезагрузите страницу, просто загрузите теги обратно в список как <li>с.

(Обратите внимание, что я не знаю Python, поэтому ниже приведен псевдокод)

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

*Вы также можете передать теги в initialTags вариант, но для этого потребуется вывести javascript, что, по моему мнению, менее аккуратно, чем описанный выше метод :)

Другие советы

Вам следует проверить поддержку тегов jQuery Select2.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top