2012-07-10 61 views
1

如果可能的话,我希望能够对此进行一般性说明,以便我可以直接尝试自己解决问题。就我而言,我很难想出解决方案。使用JS复制表单并更改名称数据

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

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

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

我在问这个,因为我真的不确定这是否会起作用,我宁愿在更改表单工作的(已经是功能的)方式之前听到更有经验的意见。如果需要更多信息,请提问并提供。

+0

http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/133307/how-to-change-name-attributes-with-javascript – worenga 2012-07-10 20:22:46

回答

1

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

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

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

现在在PHP中,你可以轻松地访问使用

$_POST['price'][$i] //where $i is 0,1,2,3..... 

每个名称基本上这是什么一样的是,它创建$ _POST数组下的“价格”的数组。 您可以轻松地遍历$ i并获取其他字段的值。

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

+0

我早些时候尝试过,但由于某种原因它似乎不起作用。这是非常有道理的,但我无法得到它... – zgilly 2012-07-10 21:03:58

+0

你已经评论了其他答案“So $ _POST ['ISBN'] [0]将有一个值,但$ _POST ['ISBN'] [1]将是空的“。所以我认为html/js存在一些问题。您的js是否在原始

.....
标记内添加了其他书籍的输入? – 2012-07-10 21:09:41

+0

谢谢你没有意识到当我复制时,它将原始表单声明作为div的一部分。这是一个很大的皮肤,非常感谢你! – zgilly 2012-07-10 21:20:04

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

复制这和只更新的ID,使用JS(因为每个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]; 
} 

这是我想去的一种方式。

+0

我尝试着制作名称值数组,但我没有更改新创建的输入项目的ID。它当时没有工作。这是一个创造/改变? – zgilly 2012-07-10 20:40:27

+0

不是真的..它只是在js方面更成为一个问题..当你尝试使用数组时,wat发生了吗?你在服务器端收到的值? – redDevil 2012-07-10 20:42:06

+0

它实际上可以与一本书一起工作,但不会拉动其他值。所以$ _POST ['ISBN'] [0]会有一个值,但是$ _POST ['ISBN'] [1]将是空的。我现在可能需要再来一次,因为我有更清晰的头脑 – zgilly 2012-07-10 20:47:34