1

我有一个页面,允许用户输入很多关于他们的信息(元数据),然后他们可以单击一个图标,该图标打开一个模式窗口,其中包含一个允许他们添加位置的 googlemap,以及该位置的标题。

使用 mootools,我可以使用 onclose 将表单字段的值传递回原始表单。然后,主页表单有一个隐藏的输入字段,它作为一个字段进入数据库,序列化。

问题是用户可以根据需要添加任意数量的位置,也有 3 种类型的位置。每个都有自己的一组坐标,可以是单个或多个!

所以我想知道处理所有这些数据的最佳方式,是否可以将其加载到一个表单中,然后使用 Moo 将该表单提交到单个表单字段,或者我可以使用 moo 将所有信息附加到一个隐藏的输入字段,但如果我这样做,用户输入如何进入它。我很难过,并查看了一些有关如何以“最佳”方式进行设置的建议。

目前我有一个表,每个项目都添加为一个新行,当用户单击地图时,JS 会创建一个新行,其中包含有关单击、项目和用户输入字段的详细信息。

如果它是单个位置,则将其添加为“地标”、名称的用户输入字段,然后坐标进入第三个表格单元格。但是,如果它是一个形状,那么第一个单元格包含“形状”,用于名称/描述的用户输入字段,第三个单元格包含每个点的坐标列表,这对于线是相同的。

我遇到的问题是我可以将它们全部写入一个表单字段,但是我如何允许用户输入标题,我需要为此使用表单字段?另一种选择是从表中取出每一行并将其输入到单个表单字段中,由管道或类似字段分隔,但我不确定我是否可以从其他表单字段中读取。

希望上面说的有点道理!!欢迎所有反馈!

我为此使用了mootools,但如果我能理解布局,那么这应该不是问题。

4

2 回答 2

2

我建议您在用户进行选择时使用一个对象来维护所有位置数据。当提交表单时,将该数据序列化为 JSON 对象的隐藏字段。

因此,当用户在地图窗口中单击时,除了表格之外,您还会在对象中记录信息。填充的对象如下所示:

var usersLocations = {"locations": [
        {"type": "point", "coords": [100,200]},
        {"type": "line", "coords": [[200,300],[400,500]]},
        {"type": "shape", "coords": [[200,300],[400,500],[1000,1500]]}
    ]
};

Mootools 可能有一些 JSON 方法,但如果没有,请查看http://www.json.org/js.html以获取工作代码。您可以使用 JSON.stringify() 将对象转换为适合保存在数据库中的纯字符串,当您取出该字符串时,您可以使用 JSON.parse() 再次将其转换为对象。

至于处理用户输入,您可以像现在一样将表格写入页面(或基于上述对象)。然后,当用户在其中一个字段中输入内容时,将该值复制到 usersLocations 对象中。所以在更新数据结构的输入字段上有一个 onBlur 事件处理程序(像这样):

        usersLocations.locations[0]["type"] = "<what the user typed>";
于 2008-12-05T16:31:15.697 回答
0

你在找这样的东西吗?

usersLocations.locations[0]["name"] = document.getElementById("location0name").value;
于 2009-05-05T00:25:14.450 回答