2014-04-03 299 views
1

我有一个普遍的问题。我用django创建了一个表单,如果我使用提交,但并非所有的数据都是正确的,或者当有必填字段丢失时,页面会跳回到默认值。 表单内的值已保存,但不包含页面布局。JavaScript保留页面重装后的值

我的javascript改变布局设计:

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

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

总之说,我想保持(UN)的状态倒塌领域。 有人可以请点我在正确的方向来实现(新到javascript)

+0

使用'ajax'提交表单。 – Rupam

+0

好吧,我去看看那个,还有一部分我需要学习。 。哈哈 –

+0

1)。你可以'ajaxify'(不刷新)表单。 2)。添加验证以从有效数据创建cookie或会话。 –

回答

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 
     } 
    } 
}); 
+0

这是我正在建议的。否则,请查看$ .ajax(),它不会像以前那样困难。 – Android334

+0

谢谢,我一定会尝试这个(明天),我认为ajax是有用的学习无论如何。但非常感谢! –

相关问题