【问题标题】:Input Checkbox Array, if unchecked no value is sent by jQuery输入复选框数组,如果未选中,则 jQuery 不会发送任何值
【发布时间】:2014-10-08 16:39:32
【问题描述】:

我有一个动态创建的表单,所以我有一个输入数组!

已解决:<input type="hidden" name="smoker_patient[ID]" value="off" /> 每个具有相同 ID 的复选框的隐藏字段!#

行看起来像:

<tr><td>
  [stuff]
   <input type="checkbox" name="smoker_patient[1]" class="smoker" id="cbx1" checked="checked"/>
  [stuff]
</td></tr>
<tr><td>
  [stuff]
    <input type="checkbox" name="smoker_patient[2]" class="smoker" id="cbx2"/>
  [stuff]
</td></tr>
<tr><td>
  [stuff]
    <input type="checkbox" name="smoker_patient[3]" class="smoker" id="cbx3" checked="checked"/>
  [stuff]
</td></tr>

如你所见,cbx1 和 cbx3 被选中。(只是为了显示错误)但是 jQuery 发送的数组只包含

smoker_patient[0] = 'on'
smoker_patient[1] = 'on'

但应该是……

smoker_patient[0] = 'on'
smoker_patient[1] = 'off'
smoker_patient[2] = 'on'

所以我在 PHP 中得到错误:

注意:未定义的偏移量:2 in newcoexposition.php on line XX

【问题讨论】:

  • 这是预期的行为 - 如果未选中复选框,则永远不会发布它们。
  • 那我现在能做什么?我需要这个,因为整个表格更大,并且有 3 个动态表格!
  • 我什至不完全知道这里发生了什么,但是将答案编辑到问题中并在标题中添加 **[SOLVED]** 并不是这里的做法。
  • 如果你想保证一个值被发布为是或否,你最好只使用一对代表 y/n 的单选按钮,而不是试图绕过正常的预期复选框的行为。

标签: javascript php jquery arrays checkbox


【解决方案1】:

我不确定您输入部分命名的语法。你似乎知道你做得很好,我认为你不会不知道如果你 name="" 他们都一样,那么你的 $_POST$_GET 只会一遍又一遍地看到同一个。我相信您已经想到了这一点,name="smoker_patient[]" 一定只是一个伪占位符。

话虽如此,如果这不是代码的问题,那么您可以这样处理。

您需要使用 PHP 来确保 $_POST 值已设置在某处。选择或选中或选中复选框并通过$ _POST发送表单时,信息不会像其他HTML对象一样发送。相反,它在您的 $_POST 响应处理 PHP 页面中以 ONOFF 的形式发送。

@mithunsatheesh 是正确的,唯一的方法是使用isset($_POST['checkbox']) 来确保它已被设置或检查...

如果你的部分是动态的,那么你可以使用 php 和一个简单的计数器来确保所有动态复选框都被赋予唯一的名称和标识符,就像这样......

我会先看看我需要多少个盒子,然后……

$totalNumOfBoxes = 3;
for($i=0; $i<$totalNumOfBoxes; $i++) {
    echo '<tr>
              <td>
                  <input type="checkbox" name="smoker_patient_".$i class="smoker" id="cbx".$i />
              </td>
          </tr>';
}

然后您将拥有一系列带有唯一标识符的框,因此当您提交表单时,每个复选框都不会与 $_POST 数组中的同级复选框混淆。

另一方面,在 $_POST 响应处理 PHP 文件中,您将通过给自己一个 $_GET 变量来查找它们,该变量填充了自测试边界以查看返回了多少框以来有多少框isset() 和复选框是不可能的...

我会制作一个包含所有这些框的表单,其中包含 method: POSTaction: myHandlerPHPFile.php?boxCount=3,所以当您到达 POST 请求的这一侧时,您可以创建您的 $totalNumOfBoxes = $_GET['boxCount']

您可以将 action: myHandlerPHPFile.php?boxCount= 计数设置为 3,方法是使用使框也将此计数变量添加到组合中的相同外观。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多