2013-04-19 26 views
3

我有一個單選按鈕集合的表單,並且我使用php將選中按鈕的值發送到另一個頁面。該表格必須另增加一組相同的單選按鈕的選項,所以如果我使用的船名以下方法屬性:單選按鈕上的自動增加的名稱屬性

<div> 
    <input type="radio" name="food[]" value="apple" /> Apple 
    <input type="radio" name="food[]" value="orange" /> Orange 
</div> 

並添加上述的克隆,

$_POST['food']; 

這會給我每個輸入的值,這將總共4.我試圖使用括號遞增方法,但仍然保持返回被檢查的單選按鈕的值的功能。

所以我的問題是,有沒有辦法使用方括號來做自動遞增的名稱屬性,但是當發送值的PHP確保每個div單選按鈕分組只返回其中一個值一個被檢查?請讓我知道這個問題是否太模糊,這是我的第一個問題。

+0

你能告訴你期望得到的結果是什麼樣的樣本?你的問題非常模糊......不能真正告訴你想要完成什麼。 –

+0

你確定你有'食物[]'每個無線電輸入?我在localhost上做了一個簡單的測試,PHP只接收選中的一個(儘管是數組形式),即如果我選擇「Orange」,PHP只接收'$ _POST [「food」] [0] =「orange」',否「蘋果」。 – Passerby

回答

0

我可以不理解你的問題。您無法自動增加名稱,導致您使用單選按鈕。通過在第一頁選擇蘋果,在第二頁選擇橙色,你將失去你的第一個選擇(蘋果)。您可以使用複選框代替單選按鈕做到這一點:

第1頁:

<form method="post" action="page2.php"> 
<div> 
    <input type="checkbox" name="numberofapples" value="1" /> Apple 
    <input type="checkbox" name="numberoforanges" value="1" /> Orange 
</div> 
<input type="submit" value="go"> 
</form> 

第2頁:

<form method="post" action="result.php"> 
<div> 
    <?if($_POST['numberofapples']){?><input type="hidden" name="numberofapples" value="1" /> <?}?> 
    <input type="checkbox" name="numberofapples" value="<?=($_POST['numberofapples'])?2:1?>" /> Apple 
    <?if($_POST['numberoforanges']){?><input type="hidden" name="numberoforanges" value="1" /> <?}?> 
    <input type="checkbox" name="numberoforanges" value="<?=($_POST['numberoforanges'])?2:1?>" /> Orange 
</div> 
<input type="submit" value="go"> 
</form> 

結果頁面:

Apples: <?=($_POST['numberofapples'])?$_POST['numberofapples']:0?> 
Oranges: <?=($_POST['numberoforanges'])?$_POST['numberoforanges']:0?> 

但你爲什麼不你在發佈第二頁後進行計數? (添加第1頁後的值作爲隱藏字段2頁的形式)

0

如果你想用幾個DIV組具有相同的輸入名字,我會這樣創建它們:

<div> 
    <input type="radio" name="food[0][]" value="apple" /> Apple 
    <input type="radio" name="food[0][]" value="orange" /> Orange 
</div> 
<div> 
    <input type="radio" name="food[1][]" value="apple" /> Apple 
    <input type="radio" name="food[1][]" value="orange" /> Orange 
</div> 
<div> 
    <input type="radio" name="food[2][]" value="apple" /> Apple 
    <input type="radio" name="food[2][]" value="orange" /> Orange 
</div> 

所以,在您的PHP中,您將使每個組都處於分離的密鑰中。例如

print_r($_POST['food']); 

應該返回是這樣的:

array(
    [0] => array(
    [0] => 'apple' 
), 
    [1] => array(
    [0] => 'orange' 
), 
    [2] => array(
    [0] => 'apple', 
    [1] => 'orange' 
) 
) 

+0

這與我所指的很接近,所以我使用以下動態動態添加更多包含jquery單選按鈕的div,請記住,我通過此代碼手動增加第一個值(我克隆了最後一個div,找到單選按鈕並獲取name屬性並使用一個函數來更改它,函數包括這個): 'var theNumber = $(this).attr('name')。match(/^\ d + $ /); theNumber = + theNumber + 1; var a = $(this).attr('name')。替換(/ \ d + /,theNumber); return a; ' 我只能從0增加到1,添加更多的div後,我仍然得到'food [1]' –

+0

這就是我的意思,看看這個[fiddle](http://jsfiddle.net/ambM7 /)。如果我添加至少3個新的div,並檢查添加的div的name屬性,我不能遞增1。我希望能夠繼續遞增1 –

+0

因爲'newNum'爲空,它們都是1。另外,請記住使用'name [] []'而不是'name []'。 –