2017-04-21 51 views
0

我想通過POST從一組複選框中獲取所有值 - 也是返回false的複選框。對於單個複選框,有一個解決方案here。這是hacky,但它至少不需要Javascript。但如何對這種將複選框置於未選中的數組中

<input name="link[]" type="checkbox"/> 
<input name="link[]" type="checkbox"/> 
... 

一個類似的解決方案作爲一個在其他職位建議是行不通的,因爲它使迭代:

<input name="link[]" type="hidden"/> <!-- 0 --> 
<input name="link[]" type="checkbox"/> <!-- 1 --> 
<input name="link[]" type="hidden"/> <!-- 2 --> 
<input name="link[]" type="checkbox"/> <!-- 3 --> 
... 
+0

你想通過POST提交的UNCHECKED複選框的值? –

+0

我想要所有的值,以便它匹配文本輸入字段「名稱」返回的數組。如果我只獲取已選中的選項,則無法確定實際選中哪個複選框。 – meles

+0

這完全是錯誤的方法。您沒有正確使用複選框。 –

回答

2

我能想到的另一種方式被明確給他們指標

<input name="link[0]" type="hidden"/> 
<input name="link[0]" type="checkbox"/> 
<input name="link[1]" type="hidden"/> 
<input name="link[1]" type="checkbox"/> 
<input name="link[2]" type="hidden"/> 
<input name="link[2]" type="checkbox"/> 

或者你可以做到這一點,而不使用隱藏的輸入:

<input name="link[0]" type="checkbox"/> 
<input name="link[1]" type="checkbox"/> 
<input name="link[2]" type="checkbox"/> 

然後檢查缺少的陣列索引服務器端。

+0

我沒有可能將'name'索引。所以,有什麼辦法嗎? –

0

當提交表單時,爲其指定的name屬性的所有表單元素都會提交它們的name及其value。對於大多數表單元素,value來自用戶輸入的內容。

當您提交一個包含單選按鈕和/或複選框的表單時,只有名稱/值對形成複選框或單選按鈕。這樣,您的表單處理代碼就不必分揀出哪些按鈕/框被選中。但是,這樣做的結果是,複選框和單選按鈕必須爲其value屬性設置爲value。這個值是你將如何知道選擇了哪個按鈕/框(接收一個名稱/值對checkbox4=true並沒有真正地告訴你太多。)

在下面的代碼中,我們將知道哪些複選框只是通過查看在提交表單的action該複選框中的數據進行了檢查以及這些檢查的含義是:

<input type="checkbox" name="chkStudent1" value="Mary"> Mary 
<input type="checkbox" name="chkStudent2" value="John"> John 
<input type="checkbox" name="chkStudent3" value="Joe"> Joe 

現在,當表單提交,讓我們說你選中第二個複選框,名稱/值對將提交chkStudent2=John。您的表單處理代碼將確切知道哪個元素已被檢查,並且相應的數據將可用於該代碼。