我有一组动态生成的复选框和每个复选框的textarea输入。我想通过仅检查复选框的POST发送textareas的值。这怎么可能?
我可以发送复选框和textareas的单独数组,但复选框只存储已检查项目的值,因此很难判断哪个textarea与哪个复选框一起使用。
答案 0 :(得分: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 ];
}
答案 1 :(得分:0)
您可以在提交之前根据所选复选框使用Javascript处理提交事件并从DOM中删除不必要的textareas。
答案 2 :(得分:0)
你可以用Javascript做某事,例如当用户点击提交时删除不需要的textareas,但这对于简单的事情来说是一种肮脏的方式。最好不要依赖Javascript来验证和处理输入。
我认为更好的方法是在PHP中处理POST数组。似乎麻烦的是复选框没有正确命名,因此它们无法与textareas匹配。解决方案是提出一个更好的命名方案,这应该是直截了当的。
答案 3 :(得分:0)
你做不到。我认为你要做的只是处理具有相应复选框的textarea。一个简单的方法是将复选框命名为textarea,这样它们就可以创建一个数组,索引将它们与togethor联系起来。
例如:
<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]">
然后,如果设置了[“checked”]元素,那么当你处理POST数据时,你需要foreach
通过带有if
子句的数组。