2017-07-04 108 views
0

我使用javascript根據int值克隆表單。我使用[]括號來從其他輸入類型獲取數組值。以無線電輸入取數組值

<input type="text" name="state[]" class="form-control" id="state" required> 

並用於無線電輸入。

<input type="radio" name="gender[]" value="Male">Male 

使用服務器端的循環將這些數據保存到分貝。

for ($i = 0; $i <= $request->limit; $i++) { 
    $user->name = $request->name[$i]; 
    $user->gender = $request->gender[$i]; 
    $user->address = $request->address[$i]; 
    $user->save(); 
} 

我就行得到的Undefined offset: 1錯誤:

$user->gender = $request->gender[$i]; 

如因爲無線電輸入不能保持在陣列形式的數據。當我轉儲並請求除收音機以外的所有輸入都以數組形式存在數據。無線電輸入的值由克隆形式的下一個無線電輸入的值成功。

如何從無線電輸入中獲取數組值?

+0

您的收音機似乎沒有必需或已檢查的屬性。用戶因此可以將其留空。那麼你不會有那一行的結果。 – colburton

+0

'$ request-> limit'是什麼? –

+0

這也可能是因爲'$ request-> limit'可能會計算數字或結果,例如,您可能有2個結果,但是因爲$ i = 0您的for()循環(如果要遠)。嘗試把'for($ i = 0; $ i < $request-> limit; $ i ++){' –

回答

0

問題是,如果你所有的單選按鈕的名稱都是gender[],那麼它們都在同一個組中,並且只能從所有窗體克隆中選擇一個選項。

因此,舉例來說,如果你的形式如下:

<form> 
<input type="text" name="name[]" required> 
<input type="radio" name="gender[]" value="Male">Male 
<input type="radio" name="gender[]" value="Female">Female 
<input type="text" name="name[]" required> 
<input type="radio" name="gender[]" value="Male">Male 
<input type="radio" name="gender[]" value="Female">Female 
</form> 

如果我嘗試前兩個按鈕填充它,並把「約翰」在名字字段,然後選擇「男」 ,然後在第二個名稱字段中輸入「Marry」,並從最後兩個按鈕中選擇「Female」,第一組的「Male」選項將消失 - 因爲瀏覽器將所有單選按鈕視爲同一組,因爲它們具有一樣的名字。

我建議用<select>框替換單選按鈕。