在提交之前为动态字段存储客户端临时数据的最合理方式

时间:2016-08-21 08:13:56

标签: jquery html

我有一个页面,用户每次克隆另一个元素时都可以动态创建越来越多的字段。我的页面上有10个不同的DIV,每个DIV都可以克隆到#34;使用jQuery拖放效果无限次地进入容器。每当最终用户在容器内创建新项目时,他们就可以操纵他们创建的项目的设置。

例如,容器中的DIV的新克隆可以具有一系列选项,例如文本,颜色,大小,细度,以及可能由最终用户设置/更改的20多个选项。

当然我希望能够在每个项目的基础上保存这些设置,这样当他们完成添加/克隆DIV并为每个单独的项目设置他们想要的所有属性时,那么当他们点击" SAVE& #34;它会将所有内容提交给服务器并保存。

然而,我对HTML的困惑是我不知道在提交之前暂时存储所有这些设置的最佳方式。

以下是我发现使用jQuery数据集进行研究的两种可能性:https://api.jquery.com/data/

这将只是使用

$("#idofDiv").data("key", "value");
$("#idofDiv").data("key"); //returns value

我发现的另一种方式是:How to store temporary data at the client-side and then send it to the server

此方法讨论构建一个数组以在发送之前存储临时数据。虽然我真的更喜欢数组/表选项,然后jQuery只是因为要提交的数据/表信息周围的简单JSON.stringify在后端更容易处理,我有这个选项的问题是有没有简单的方法来改变"如果最终用户回来更改房产的信息。

我的意思是,如果我使用...

创建一个存储对象
var table=[];
table.push({name:"div1", color:"red"});

为了让我把这些信息拿出来,我必须基本上对数组中的所有对象执行for-next循环,以查找name字段=我正在查找的内容,然后全部拉出在完成重新推送已更改的信息之后,将值1逐1输出。

这些真的是我唯一的两个选择吗?在将其推送到服务器之前,是否有任何精简库或其他方法可以使客户端的信息保存更轻松?也许两者的混合,它存储数据的数组与一个键,以便更容易检索?

1 个答案:

答案 0 :(得分:0)

如果有人在将来关心..

我最终做的是对所有项目进行foreach循环,取出jQuery数据集信息,然后将其保存为位于刚刚将其提交到php页面的表单帖子中的html输入元素值中的JSON。

            var objectTable = [];
            var newEntry = {};

            $("input[type=text]").each(function() {

                var textFieldName = $(this).prop("id");

                var value = $(theField).data(textFieldName);
                if (textFieldName != "fieldName") {
                    if (value === undefined) {
                       newEntry[textFieldName] = "";
                    } else {
                       newEntry[textFieldName] = value;
                    }   
                }
            objectTable.push(newEntry);
            });
            $("#json").prop('value', JSON.stringify(objectTable));