2012-07-10 91 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