互いに「積み重ねられた」入力フィールドのセットがあります。
<!-- This controls which data set you're looking at -->
<select class="EditorInput" id="Selector" name="Selector">
<option value="0">Link a new vendor</option>
<option value="1">The ACME Company</option>
<option value="2">Widgets Unlimited</option>
</select>
<!-- These values change based on the selection above -->
<input type="text" name="Price" />
<input type="text" name="SKU" />
<input type="text" name="Field3" />
<input type="text" name="Field4" />
<input type="text" name="Field5" />
<input type="text" name="Field6" />
<input type="text" name="Field7" />
<input type="text" name="Field8" />
一度に表示されるセットは1つだけですが、すべてのセットの値は送信されるまでブラウザに保持されます。ドロップダウンで選択を行うと、グループ内のすべての入力フィールドが変更され、選択に関連する値がユーザーに表示されます。たとえば、選択フィールドで「ACME Company」を選択すると、価格フィールドにACME Companyの価格が表示され、SKUフィールドにACMECompanyのSKUが表示されます。
すべてのデータとすべての変更はクライアント側に保存されます。データが(AJAXを介して)保存されると、各セットのすべての値が同時にサーバーに保存されます。
送信はAJAXを介して行われるため、必ずしもすべての値を入力要素に格納する必要はありません。
これを行うには、主に2つの方法が考えられます。
方法1
javascriptオブジェクトにデータが格納されている単一の入力要素のセット。選択を変更すると、正しいデータがjavascript変数から読み取られ、フィールドに挿入されます。ユーザーが最初のセットに加えた変更は、最初に変数に保存されます。新しいセットを追加することを選択すると、現在の値が変数に保存され、フォームの値がクリアされます。
方法2
オプションごとに1セットの入力フィールドを用意します。非アクティブな入力セットを非表示にします。選択を変更すると、正しいセットが表示/非表示になります。新しいセットを追加すると、既存のセットの1つがコピーされ、新しい入力要素がDOMに挿入され、それらの新しい入力要素の値がクリアされます。
方法3
HTML 5データを使用して、次のような複数の値を保存します。
<input type="text" name="Field8" value="$7.95" data-value-vendor-1="$6.99" data-value-vendor-2="$2.65" data-value-vendor-3="$12.24"/>
次に、javascriptを使用して、値を「ストレージ」に切り替えたり、「ストレージ」から切り替えたりします。
どちらのオプションがより理にかなっていますか?それとももっと良い方法はありますか?また、方法1では、各セットの値はどこに保存されますか?選択オプションについて?