【问题标题】:Correct way to nest arrays of elements inside HTML forms在 HTML 表单中嵌套元素数组的正确方法
【发布时间】:2012-09-19 16:57:15
【问题描述】:

我有一个包含类似项目组的 HTML 表单。我知道 HTML 没有“数组”的概念,所以我想知道编写包含单个表单并且可以根据需要添加多组相同项目的内容的最佳方法是什么。

<form>

    <div>
        <input name="title[]">
        <textarea name="body[]">
    </div>

    <div>
        <input name="title[]">
        <textarea name="body[]">
    </div>

    <a href="#" id="addrow">Add row</a>

    <input type="submit">

</form>

【问题讨论】:

  • 你觉得这个符号有什么问题?它实际上很受欢迎。
  • 你可以为每个数组提供一个索引,到页面,它只是一个名称的字符串,但你的后端可以将它解析为一个数组。例如:title[0]、title[1]
  • HTML 不知道数组,但是很多服务器端语言,比如 PHP。
  • 那些&lt;div&gt;s 应该是&lt;fieldset&gt;s。
  • 通常,html 表单中唯一具有相同名称的元素是复选框组和单选按钮组。其中,单选按钮是互斥的,所以只有一个被发送到服务器。复选框和选项(在多选中)是唯一其值作为数组发送的元素。为您的其他元素(文本选择和文本区域)指定唯一名称。

标签: javascript html arrays forms


【解决方案1】:

你可以有这样的东西:

<form method="post">

<input type="hidden" name="num_of_elements" value="2">

<div>
    <input name="title[0]">
    <textarea name="body[0]">
</div>

<div>
    <input name="title[1]">
    <textarea name="body[1]">
</div>

<a href="#" id="addrow">Add row</a>

<input type="submit">

当您使用 javascript/php 或其他方式添加 div 时,只需在隐藏输入 num_of_elements 中添加元素计数

然后当你在 PHP 中提交它时,你会得到如下变量:

$count = intval($_POST['num_of_elements']);
for($i = 0; $i < $count; $i++)
{
echo $_POST["title[{$i}]"];
}

【讨论】:

    【解决方案2】:

    我认为这会奏效:

    <form>
    
        <div>
            <input name="title[0]">
            <textarea name="body[0]">
        </div>
    
        <div>
            <input name="title[1]">
            <textarea name="body[1]">
        </div>
    
        <a href="#" id="addrow">Add row</a>
    
        <input type="submit">
    
    </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多