2011-07-15 16 views
0

我有一組動態生成的複選框和每個複選框的textarea輸入。我只想通過檢查複選框的POST來發送textareas的值。這怎麼可能?POST特定文本框

我可以發送複選框和textareas的單獨數組,但複選框僅存儲已檢查項目的值,因此很難判斷哪個textarea會與哪個複選框一起使用。

+0

大多數瀏覽器我已經測試沒有爲*禁用發送值*元素。嘗試基於複選框動態啓用/禁用textareas,你可能會得到你想要的。我不確定這是否適用於* all *瀏覽器類型。 – mikey

回答

1

這其實並不難:

foreach($inputs as $key => $value) 
{ 
    ?> 
    <input type="checkbox" name="cb[<?php echo $key ?>]" /> 
    <input type="text" name="tf[<?php echo $key ?>]" value="<?php echo $value ?>" /> 
    <?php 
} 

現在,在POST的接收器:

foreach($_POST[ 'cb' ] as $key => $value) 
{ 
    // this is the value of a textfield which has a corresponding cb checked, 
    $text = $_POST[ 'tb' ][ $key ]; 
} 
+0

比我想象的要簡單多了! – Abdulla

0

您可以在提交之前根據選定的複選框使用Javascript處理提交事件並從DOM中刪除不必要的textareas。

0

可能用Javascript做些事情,例如當用戶點擊提交時刪除不需要的textareas,但這是一種骯髒的方式來做一些簡單的事情。最好不要依賴Javascript來驗證和處理輸入。

我認爲更好的方法是在PHP中處理POST數組。看起來麻煩的是複選框沒有正確命名,所以它們不能與textareas匹配。解決方案是提出一個更好的命名方案,這應該很簡單。

0

你不能那樣做。我認爲你想要做的只是處理有相應複選框的textarea。一個簡單的方法是將複選框的名稱命名爲textarea,以便他們創建一個數組,索引將它們連接到一個數組。

例如:

<textarea name="boxes[0][text]"></textarea><input type="checkbox" name="boxes[0][checked]"> 
<textarea name="boxes[1][text]"></textarea><input type="checkbox" name="boxes[1][checked]"> 

然後當你處理POST數據,需要但foreach通過與if子句陣列如果[「檢查」]元素被設置。

+0

你可以做一些事情,如從DOM樹中刪除實際的框,但祝你的運氣可靠,跨瀏覽器 - 我不會推薦它。除此之外,最好不要引入依賴關係,除非必須包括客戶端腳本。 – Josh