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>

那么有什么想法可以将其保留在我的页面中吗?

谢谢大家!

ps:我不会用ajax也不会

4

3 回答 3

2

HTTP 在设计上是一种无状态协议,您需要状态。

为了解决这个问题,引入了Cookie 。

在重新加载页面之前存储它,并阅读它,如果它在那里,添加文本。

假设来自 MDN的垫片docCookies

在离开之前

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来维护状态。

于 2013-05-29T15:12:44.497 回答
0

因为您知道元素将是什么,所以谁不隐藏它,只根据您的条件显示它。在重新加载时,只需再次检查您的条件。恕我直言是最好的方法。

如果您仍想附加它,则需要将已附加元素(或表单上的 html)的信息存储在 localstorage 或 cookie 中。

于 2013-05-29T15:15:18.533 回答
-1

如果您不想使用 ajax,可以使用 cookie http://www.w3schools.com/js/js_cookies.asp

将您的数据存储在 cookie 中并在加载时重新附加

于 2013-05-29T15:14:24.663 回答