POST特定文本字段

时间:2011-07-15 15:40:51

标签: php forms

我有一组动态生成的复选框和每个复选框的textarea输入。我想通过仅检查复选框的POST发送textareas的值。这怎么可能?

我可以发送复选框和textareas的单独数组,但复选框只存储已检查项目的值,因此很难判断哪个textarea与哪个复选框一起使用。

4 个答案:

答案 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子句的数组。