我有一个普遍的问题。我得到了一个用django制作的表格,如果我使用提交,但并非所有数据都是正确的,或者当缺少必填字段时,页面会跳回到默认状态。 表单中的值将被保存,但不会保存页面布局。
我的javascript改变了布局:
$(function(){
$('li.fields').slice(1).hide();
$('ul').on('click', 'li.title', function(){
$(this).next().slideToggle(200)
})
});
简短说,我想保留(联合国)崩溃字段的状态。 有人可以指出我正确的方向来实现这一目标(新的javascript)
答案 0 :(得分: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
}
}
});