2013-05-29 37 views
0

我想知道如何保留我在jQuery中附加的元素活着? 我有一個表單,當a的值正在改變時,一個元素附加。 但是,當有錯誤,它重新加載頁面並打印錯誤。 但附加元素重裝過程的頁面後消失..如何在重新加載時附加任何元素

<form method="post" action="?action=comment"> 
    <select id="tag" name="tag"> 
     <option value="1">super</option> 
     <option value="2">super</option> 
    </select> 
    <span id="elem_added"></span> 
    <input type="submit" value="send" /> 
</form> 

<script> 
    $("#tag").change(function(e){ 
     option = $(this).val(); 

     if (option == "1") 
     { 
      $("#elem_added").append("<input type='text' name='test' id='input_added' />"); 
     } 
    }); 
</script> 

所以任何想法,以保持它在我的網頁?

Thx everyone!

PS:我不使用AJAX,我不會

+1

你不能。你必須存儲一個表示元素已被添加的標誌,然後檢查所述標誌並重新添加元素(服務器端或客戶端,無所謂)。 Ajax對於這類工作非常理想,因此您不必重新添加元素或存儲任何內容。 –

+0

根據您重新加載頁面的方式,您可以將一些信息附加到url的末尾,並讓頁面讀取以重新生成添加的內容。 – NickSlash

回答

2

HTTP是通過設計一個無狀態的協議,你需要的狀態。

要解決這個問題Cookies ere介紹。

在重新加載頁面之前將其存儲並讀取,如果存在,請添加文本。

假設the docCookies shim from MDN

導航離開

docCookies.setItem("wasloaded","true"); 

刷新後前:

if(docCookies.getItem("wasloaded")){ 
    //add text 
}; 

在你的情況,這將是這樣的:

if (option == "1" || docCookies.getItem("wasloaded")){ 
     $("#elem_added").append("<input type='text' name='test' id='input_added' />"); 
     docCookies.setItem("wasloaded",true); 
    } 

我同意Kevin的說法,AJAX對於這類事情會非常理想。

更現代的方法是使用document.localStorage來維護狀態。

0

reappend,因爲你知道該元素將是什麼誰不喜歡隱藏標記並根據您的情況展示它。在重新加載時,只需再次檢查您的條件。恕我直言,是最好的方法。

如果你仍然想追加它,你需要存儲你已經在localstorage或cookie中追加元素(或表單上的html)的信息。