2012-03-17 20 views
3

[解決方案:通過將「[]」連接到結尾來將我的名稱更改爲數組。此外,將我的ID更改爲符合HTML規範的唯一值]HTML Form複選框沒有按照我期望的那樣提交

我創建了一個窗體,它具有每行一個用戶的複選框矩陣(html表格)以及用戶對列的權限。每個單元格都有一個複選框。連續的每個複選框都將「名稱」設置爲用戶的電子郵件地址(唯一)。複選框的值是特定權限的ID。當我點擊提交按鈕並檢查從HTTP POST返回的參數時,只有最右邊的複選框被設置用於檢查多個框的行。

例如,有三個複選框,第一個和第二個選中,第三個未選中。我只收回第二個複選框的name = id。

我在Rails中構建表單,雖然我不相信這真的是相關的。此外,這種行爲的瀏覽器是Chrome,Iceweasel和Epiphany ......所以我認爲這是我的形式。

我形式的摘錄:

<tr> 
       <td>UserOne</td> 
       <td>[email protected]</td> 
       <td> 
         <input checked="checked" id="one_oreo.com" name="[email protected]" type="checkbox" value="1" /> 
       </td> 
       <td> 
         <input id="one_oreo.com" name="[email protected]" type="checkbox" value="2" /> 
       </td> 
       <td> 
         <input id="one_oreo.com" name="[email protected]" type="checkbox" value="3" /> 
       </td> 
       <td> 
         <input checked="checked" id="one_oreo.com" name="[email protected]" type="checkbox" value="4" /> 
       </td> 
       <td> 
         <input id="one_oreo.com" name="[email protected]" type="checkbox" value="5" /> 
       </td> 
       <td> 
         <input id="one_oreo.com" name="[email protected]" type="checkbox" value="6" /> 
       </td> 
      </tr> 
+0

順便說一句 - Oreo.com並不真實 - 它是一個代號:) :) – Steve 2012-03-17 01:24:21

+0

多個具有相同ID的項目無論如何都是無效的HTML。 – Reactormonk 2012-03-17 01:29:46

+0

你應該使用唯一的ID - 一個ID值永遠不應該重複。你在表單上使用JS驗證器嗎?它可能會導致/導致你的問題。 – 2012-03-17 01:32:23

回答

5

您對所有這些設置的名稱=「」,以同樣的事情,所以它要取代的任何值原是那裏,當你打勾超過一個複選框。

爲每個複選框指定一個不同的名稱,例如name="[email protected]_check_1"或使用name="[email protected][]"將它們轉換爲數組,然後將所有傳遞給它的值存儲在數組中,然後可以在表單提交後處理!

+0

[]是解決方案!我會在4分鐘內接受這個答案。謝謝:) – Steve 2012-03-17 01:34:39

+0

我對此有嚴重的關注。在html中,你被SUPPOSED命名爲所有你想分組在一起的複選框。並且它被SUPPOSED發送默認選中的那些。所以這是違背html標準的,要求你使用[]數組語法。 – Donato 2015-06-26 20:00:05

+0

@Donato僅僅因爲一個規範告訴你,你被支持以某種方式做某件事並不意味着你正在使用的服務器端語言會很好地發揮作用。我沒有真正閱讀關於複選框的HTML規範的詳細信息,以瞭解您是否正確,但在快速搜索後,這似乎是解決此問題的最常見方法。我們不能始終如一地完美地遵循每一種語言,所以有時您必須制定例外來解決問題。 – RobFos 2015-06-29 00:10:12

0

複選框的名稱需要是唯一的。我建議在名稱中使用puttitempeh用戶標識和權限標識。你也應該相應地改變Ida。 ID不會影響表單提交,但在HTML中使用相同ID的多個元素是不正確的。

0

您無法將名稱參數命名爲每行相同的值。複選框必須是唯一的或至少是一個數組。單選按鈕是您將使用相同名稱值的位置。

相關問題