1

ユーザーが自分に関する多くの情報(メタデータ)を入力できるページがあり、アイコンをクリックすると、場所を追加できるgooglemapとその場所のタイトルを含むモーダルウィンドウが開きます。

mootoolsを使用すると、oncloseを使用して、フォームフィールドの値を元のフォームに戻すことができます。メインページフォームには、シリアル化された1つのフィールドとしてデータベースに入力される単一の非表示の入力フィールドがあります。

問題は、ユーザーが好きなだけ場所を追加できることです。場所には3つのタイプもあります。それぞれに独自の座標セットがあり、単一または複数にすることができます。

したがって、このすべてのデータを処理するための最良の方法を知りたいのですが、データを1つのフォームに読み込んでから、Mooを使用してそのフォームを単一のフォームフィールドに送信することはできますか、またはmooを使用してすべての情報をに追加することはできますか単一の非表示の入力フィールドですが、そうすると、ユーザー入力はどのように入力されますか。私は困惑し、これを「最良の」方法で設定する方法に関するいくつかの提案を検討しています。

現在、テーブルがあり、各アイテムは新しい行として追加されます。JSは、ユーザーがマップをクリックすると、クリック、アイテム、ユーザー入力フィールドの詳細を含む新しい行を作成します。

単一の場所の場合は、「目印」として追加され、名前と座標のユーザー入力フィールドが3番目のテーブルセルに入ります。ただし、その形状の場合、最初のセルには「形状」、名前/説明のユーザー入力フィールドが含まれ、3番目のセルには各ポイントに1つの座標のリストが含まれます。これは、線の場合と同じです。

私が抱えている問題は、すべてを1つのフォームフィールドに書き込むことができるということですが、タイトルのユーザー入力を許可するにはどうすればよいですか?そのためにフォームフィールドを使用する必要がありますか?もう1つのオプションは、テーブルから各行を取得して、パイプなどで区切られた単一のフォームフィールドに入力することですが、他のフォームフィールドから読み取ることができるかどうかわかりません。

上記が理にかなっていることを願っています!! すべてのフィードバックを歓迎します!

私はこれに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() を使用して、オブジェクトを DB に保存するのに適したプレーンな文字列に変換できます。その文字列を取得したら、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 に答える