2012-07-29 52 views
4

我想使用jQuery併爲用戶創建標記界面。類似於StackOverflow中的用戶可以爲他們要求的問題類型添加標籤。我得到它使用jQuery和TAG-IT的工作:django +使用jquery標記

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

爲圖書館新位置:

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

的問題是說,用戶在另一個錯誤表單的一部分並單擊提交,表單將重新加載錯誤消息,並且所有標記都將消失。 Django中是否有一種simplar方式來標記?

[編輯]

嘗試這種基於以下Hailwood的迴應......

<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。當我們用fill替換爲add時,按照:$(".tags").tagit("add", data);,那麼它就起作用了。

回答

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,這海事組織少整潔比上面的方法:)

+0

P.S請注意,我使用的數據值屬性上面的僞代碼示例中,這將只在TAG-IT的最新版本的認可!請確保您使用它! – Hailwood 2012-07-29 11:32:55