javascript - php获取未选中复选框的值

标签 javascript php html checkbox

我要求未选中复选框的值为“0”,以便我可以确定哪些值已被选中以及所有值(选中+未选中)都将被发布($_POST['chk])。我正在使用 for 循环来创建复选框,并生成一个值为“0”的隐藏字段(如 stackoverflow 上建议的 elsewhere )。

有 4 个复选框 ((count($result)-1) = 4),当选中复选框 1 和 3,而取消选中复选框 2 和 4 时,$_POST['chk'] 数组最终如下所示:

Array
(
    [chk] => Array
        (
            [0] => 0
            [1] => 180.00
            [2] => 0
            [3] => 0
            [4] => 100.00
            [5] => 0
        )

我希望它看起来像这样:

Array
(
    [chk] => Array
        (
            [0] => 180.00
            [1] => 0
            [2] => 100.00
            [3] => 0
        )

我做错了什么?使用 for 循环和隐藏的复选框字段是否可以实现这一点?

Javascript:

<script type="text/javascript">
function calculate() {
var el, i = 0;
var subtotal = 0;
while(el = document.getElementsByName("chk[]")[i++]) {
    if(el.checked) { subtotal = subtotal + Number(el.value);}
        }
        var node = document.getElementById("subtotal");
        node.innerHTML = "$" + subtotal + ".00";
        var node = document.getElementById("total");
        node.innerHTML = "$" + (subtotal*<?=$no_nights?>) + ".00";
        }   
</script>

HTML/PHP:

<form id="booking_step2" name="booking_step2" method="POST" action="index.php?p=bookings?s=3">
                <? for ($x=0; $x<=(count($result)-1); $x++) { ?>
                            <input type="hidden" name="chk[]" value="0">
                            <input type="checkbox" name="chk[]" value="<?=$result[$x]['r_rate'];?>" onclick="calculate()">
                   <? } ?>

最佳答案

您错误地使用了 chk[] 作为控件的名称。这将为每个未选中的框提供 $_POST 内的一个元素,但为每个选中的框提供两个元素。并且额外的元素可能出现在数组内的任何位置,因此您将无法理解它。

取而代之的是,为每对隐藏输入和复选框显式指定相同的索引:

<? for ($x=0; $x<=(count($result)-1); $x++): ?>
    <input type="hidden" name="chk[<?=$x?>]" value="0">
    <input type="checkbox" name="chk[<?=$x?>]" value="<?=$result[$x]['r_rate'];?>">
<? endfor; ?>

执行此操作后,复选框将具有与其前面的隐藏输入完全相同的名称chk[N],因此它将简单地胜过该值,而不是在末尾添加另一个值数组。

关于javascript - php获取未选中复选框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25633566/

相关文章:

javascript - 在窗口事件 : load, 上运行 Jquery 函数调整大小并滚动?

javascript - AngularJS 无法向 SLIM 框架发送 POST 请求

php - MySQL和PHP数组存储问题

html - 带有图像的复选框和选中状态的叠加图像

javascript - 如何编写正则表达式来动态更改产品 ID 和 anchor 标记

javascript - 为什么 CRLF 在使用 php 分配给 &lt;input&gt; 时转换为 LF

javascript - 如何从 JavaScript 调用 Laravel Controller 函数

php - 想要使用 php mysql 在水平表中显示结果

html - 粗体文本行高高于普通文本行高

html - 索引ajax加载的内容