1

ユーザーが特定の情報を入力できるフォームを作成しています。デフォルトの状態は次のようになります。

<div class="options">
<input type="text" name="option[]" />
<input type="text" name="content[]" />
</div>

ここで、[追加]ボタンをクリックして、同じ名前の2つの新しいフィールドを追加します。これにより、状態は次のようになります。

    <div class="options">
    <input type="text" name="option[]" />
    <input type="text" name="content[]" />
    <input type="text" name="option[]" />
    <input type="text" name="content[]" />
    </div>

次に、PHPで最終的に次のような文字列を作成する必要があります。

valueOfFirstOption:valueOfFirstContent,valueOfSecondOption:valueOfSecondContent

などなど。理論的には、無限の量の入力フィールドを追加できるはずです。

これは私が達成しようとしていることで可能ですか?または、入力フィールドに一意の名前を追加する必要がありますか?

私がどのように行くべきかについてのヒントやヒントはありますか?または、誰かが私のためにチュートリアル/サンプルコードを手に入れましたか?

前もって感謝します。

4

1 に答える 1

0

余分な要素を追加するときに名前にインデックスを設定できれば、これは少し良いでしょう。

<div class="options">
  <input type="text" name="data[0][option]" />
  <input type="text" name="data[0][content]" />
  <input type="text" name="data[1][option]" />
  <input type="text" name="data[1][content]" />
</div>
<a href="#" onclick="addSet(); return false;">Add</a>
<script>
    var addSet = function() {
        var container = document.getElementsByClassName('options')[0];
        var numInputs = container.getElementsByTagName('input');
        var numSets = numInputs/2;
        var nextIndex = numSets;

        var newOption = document.createElement('input');
        newOption.name = 'data[' + nextIndex + '][option]';
        container.appendChild(newOption);

        var newContent = document.createElement('input');
        newContent.name = 'data[' + nextIndex + '][content]';
        container.appendChild(newContent);
    }
</script>

その後、POST を受信すると、データをループしてデュプレットを処理できます。

$pieces = array();

foreach ($_POST['data'] as $set)
    $pieces = $set['option'] . ':' . $set['content'];
}

// or
for ($i = 0; $i < count($_POST['data']); $i++) {
    $pieces[] = $_POST['data'][$i]['option'] . ':' . $_POST['data'][$i]['content'];
}

// then
$compiledString = implode(",", $pieces);
于 2012-05-09T15:07:22.713 に答える