【问题标题】:javascript keep values after page reload页面重新加载后javascript保留值
【发布时间】:2025-11-30 12:45:01
【问题描述】:

我有一个一般性问题。我得到了一个用 django 制作的表单,如果我使用提交,但并非所有数据都是正确的,或者当缺少必填字段时,页面会跳回默认值。 保存表单内的值,但不保存页面布局。

我的改变布局的javascript:

$(function(){
    $('li.fields').slice(1).hide();

    $('ul').on('click', 'li.title', function(){
        $(this).next().slideToggle(200)
    })
});

简短地说,我想保留(未)折叠字段的状态。 有人可以指点我实现这一目标的正确方向(javascript新手)

【问题讨论】:

  • 使用ajax 提交您的表单。
  • 好的,我去看看,还有一部分我需要学习。 .哈哈
  • 1)。您可以“ajaxify”(不刷新)表单。 2)。添加验证以根据有效数据创建 cookie 或会话。
  • 澄清@JackWilliams 评论:这可能意味着要么/要么不是两者。
  • 我浏览了一下,找到了一个不错的“学习 ajax 基础知识”教程,但我只找到了简短的片段,有什么好的教程来学习这个吗?

标签: javascript jquery django reload


【解决方案1】:

如果您不能使用 AJAX(或不知道如何使用),您可以在表单中使用隐藏字段。

I've created a fiddle to simulate that.

HTML:

<input type="hidden" id="myHiddenField" />

更新的 Javascript:

$(function(){
    $('li.fields').slice(1).hide();

    $('ul').on('click', 'li.title', function(){
        $(this).next().slideToggle(200);
        var myString = "[ "; // create a string to simulate an Array
        $('ul li.title').each(function() {
            myString += $(this).is(":visible").toString() + ", "; // iterate your list to take the visible values
        });
        myString += " ]"; // finishes the Array
        $("#myHiddenField").val(myString); // populate your hidden field
    })

    // when you get back from a submit, this hidden field will have some values
    if ($("#myHiddenField").val() != "") {
        var arr = eval($("#myHiddenField").val()); // turn the string into an Array
        for (var i = 0; i < arr.length; i++) { // iterate the Array
            if (!arr[i])
                $("ul li.title").eq(i).hide(); // if the Array item is false, hide the respective li
        }
    }
});

【讨论】:

  • 这就是我要推荐的。否则查看 $.ajax() 并不会像以前那样困难。
  • 谢谢,我一定会试试这个(明天),我认为无论如何学习 ajax 都是有用的。但非常感谢!
最近更新 更多