在php / html

时间:2016-08-14 03:24:49

标签: javascript php arrays html5 checkbox

我有多个动态创建的表单字段。

<label><input type="text" name="txtAmt[]">Amount</label>
<label><input type="checkbox" name="cbMarkPaid[]">Mark as Paid</label>

我使用post方法将for提交到php文件。我知道当你没有检查时,复选框不会将数据发送到服务器。但我想知道复选框的索引是什么没检查。

E.g。如果我有4个复选框cb1,cb2,cb3,cb4和cb3,则选中cb4。然后php收到一个包含两个项目的数组:

  

array(2){[0] =&gt;字符串(2)&#34; on&#34; [1] =&GT;字符串(2)&#34; on&#34; }

但我希望数组为:

  

array(2){[0] =&gt; string(2)&#34; off&#34; [1] =&GT; string(2)&#34; off&#34; [2] =&GT;字符串(2)&#34; on&#34; [3] =&GT; string(2)&#34; on&#34;}。

isset($_POST['cbMarkPaid'][])不提供相同的输出 谢谢

1 个答案:

答案 0 :(得分:0)

使用POST复选框无法执行此操作。根据定义,unchecked checkboxes are never successful

  

成功控制对提交是“有效”的   所有“打开”复选框都可能成功。

您可以做的最好的事情是索引数组并寻找差距。例如

<label><input type="text" name="txtAmt[0]">Amount</label>
<label><input type="checkbox" name="cbMarkPaid[0]">Mark as Paid</label>
<label><input type="text" name="txtAmt[1]">Amount</label>
<label><input type="checkbox" name="cbMarkPaid[1]">Mark as Paid</label>

假设您保留第一个未选中状态,第二个选中。然后你的数组看起来像

  

array(1){[1] =&gt; string(2)“on”}

所以你知道[0]因为没有提交而被关闭