我有一組動態生成的複選框和每個複選框的textarea輸入。我只想通過檢查複選框的POST來發送textareas的值。這怎麼可能?POST特定文本框
我可以發送複選框和textareas的單獨數組,但複選框僅存儲已檢查項目的值,因此很難判斷哪個textarea會與哪個複選框一起使用。
我有一組動態生成的複選框和每個複選框的textarea輸入。我只想通過檢查複選框的POST來發送textareas的值。這怎麼可能?POST特定文本框
我可以發送複選框和textareas的單獨數組,但複選框僅存儲已檢查項目的值,因此很難判斷哪個textarea會與哪個複選框一起使用。
這其實並不難:
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 ];
}
比我想象的要簡單多了! – Abdulla
您可以在提交之前根據選定的複選框使用Javascript處理提交事件並從DOM中刪除不必要的textareas。
你可能用Javascript做些事情,例如當用戶點擊提交時刪除不需要的textareas,但這是一種骯髒的方式來做一些簡單的事情。最好不要依賴Javascript來驗證和處理輸入。
我認爲更好的方法是在PHP中處理POST數組。看起來麻煩的是複選框沒有正確命名,所以它們不能與textareas匹配。解決方案是提出一個更好的命名方案,這應該很簡單。
你不能那樣做。我認爲你想要做的只是處理有相應複選框的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
子句陣列如果[「檢查」]元素被設置。
你可以做一些事情,如從DOM樹中刪除實際的框,但祝你的運氣可靠,跨瀏覽器 - 我不會推薦它。除此之外,最好不要引入依賴關係,除非必須包括客戶端腳本。 – Josh
大多數瀏覽器我已經測試沒有爲*禁用發送值*元素。嘗試基於複選框動態啓用/禁用textareas,你可能會得到你想要的。我不確定這是否適用於* all *瀏覽器類型。 – mikey