使用JS复制表单并更改名称数据

时间:2012-07-10 20:16:27

标签: php javascript forms

如果有可能的话,我想对我应该如何解决这个问题进行一般性解释,以便我可以尝试直接解决问题。我一直在想解决方案。

我从包含图书信息(ISBN,价格,条件等)的表单传递值。一本书一直很好用。所有这些表单信息都放在div中。

我最近实现了一个简单的JS'复制'功能,它复制了div中的所有表单数据,因此用户可以添加另一本书或多本其他书籍。问题似乎是我复制的原始div中的所有名称值都没有改变,或者不接受它们现在应该包含多个值。

我应该如何让每本'书'都拥有自己的价值观?如果每个输入中的名称都是数组(例如book [0] ['price']),那么每次添加另一个div时,JS都会更改名称(例如book [1] ['price'])?

我问这个是因为我真的不确定这是否有效,而且在更改表单工作的(已经正常运行的)方式之前,我宁愿听到更有经验的意见。如果需要更多信息,请询问,我会提供。

2 个答案:

答案 0 :(得分:1)

<div id="book1">
<input type="text" name="price[]" id="price1" />
<input type="text" name="isbn[]" id="isbn1" />
</div>

复制此内容并仅使用js更新ID(因为每个ID应该是唯一的),

<div id="book2">
<input type="text" name="price[]" id="price2" />
<input type="text" name="isbn[]" id="isbn2" />
</div>

现在$_POST['price']应该给你一系列价格,isbn的每个相应元素应该给你那本书的isbn

服务器端就像,

$price = $_POST['price'];
$isbn = $_POST['isbn'];

foreach( $price as $key => $value ) {
  echo "The price is ".$value." and isbn is ".$isbn[$key];
}

这是我要去的一种方式..

答案 1 :(得分:1)

您在html表单中指定的名称可以是数组。例如价格[]

<input type="text" name="price[]">

现在,如果您有多个名称为'price []'的表单输入,则无关紧要。事实上,这使它很有用。

现在在php中,您可以使用

轻松访问每个名称
$_POST['price'][$i] //where $i is 0,1,2,3.....

基本上它的作用是它在$ _POST数组下为'price'创建一个数组。 您可以轻松迭代$ i并获取其他字段的值。

这回答了您的陈述“或者不接受他们现在应该包含多个值。”