Php 特定于POST的文本字段

Php 特定于POST的文本字段,php,forms,Php,Forms,我有一组动态生成的复选框和每个复选框的文本区域输入。我只想通过POST的复选框发送文本区域的值。这怎么可能 我可以发送复选框和文本区域的单独数组,但复选框只存储选中项的值,因此很难区分哪个文本区域与哪个复选框一起使用。在提交之前,您可以使用Javascript处理提交事件并从DOM中删除不必要的文本区域 您可以使用Javascript做一些事情,例如,当用户单击Submit时删除不需要的文本区域,但对于简单的事情来说,这是一种肮脏的方式。最好不要依赖Javascript来验证和处理输入 在我看来

我有一组动态生成的复选框和每个复选框的文本区域输入。我只想通过POST的复选框发送文本区域的值。这怎么可能


我可以发送复选框和文本区域的单独数组,但复选框只存储选中项的值,因此很难区分哪个文本区域与哪个复选框一起使用。

在提交之前,您可以使用Javascript处理提交事件并从DOM中删除不必要的文本区域

您可以使用Javascript做一些事情,例如,当用户单击Submit时删除不需要的文本区域,但对于简单的事情来说,这是一种肮脏的方式。最好不要依赖Javascript来验证和处理输入


在我看来,更好的方法是用PHP处理POST数组。问题似乎在于复选框没有正确命名,因此无法与文本区域匹配。解决这个问题的办法是提出一个更好的命名方案,它应该很简单。

你不能这样做。我认为您试图做的只是处理带有相应复选框的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数据时,如果设置了[“checked”]元素,则通过带有
if
子句的数组
foreach

实际上并不难:

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
}

我测试过的大多数浏览器都不会发送禁用元素的值。尝试根据复选框动态启用/禁用文本区域,您可能会得到您想要的内容。我不确定这是否适用于所有浏览器类型。你可以做一些事情,比如从DOM树中删除实际的框,但是祝你好运,让它可靠地跨浏览器工作——我不推荐这样做。除此之外,除非必须,否则最好不要引入依赖项,包括客户端脚本。这比我想象的要简单得多!
foreach( $_POST[ 'cb' ] as $key => $value )
{
    // this is the value of a textfield which has a corresponding cb checked,
    $text = $_POST[ 'tb' ][ $key ];
}