1

我正在创建一个表单,用户可以在其中输入某些信息。默认状态如下所示;

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

现在,通过单击按钮添加,我将添加两个具有相同名称的新字段,因此状态如下;

    <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 时,您可以遍历数据并处理 duplets

$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 回答