使用单击事件创建数组

时间:2014-01-19 01:25:28

标签: javascript php jquery arrays

所以我有一组使用以下代码动态创建的复选框:

<?php foreach($candies as $candy): ?>

     <a style="cursor:pointer;" class="candy list-group-item" data-id="<?php echo $candy['candy_id']; ?>" data-toggle="popover" data-placement="top" data-html="true" data-trigger="hover" data-content="<img src='<?php echo $candy['candy_img']; ?>'>"><?php echo $candy['candy_name']; ?></a>

     <input type="checkbox" id="<?php echo $candy['candy_id']; ?>" name="<?php echo $candy['candy_name']; ?>" style="display:none;" />

<?php endforeach; ?>

这导致以下(缩短的)代码:

<ul class="list-group">
    <a style="cursor:pointer;" class="candy list-group-item" data-id="1" data-toggle="popover" data-placement="top" data-html="true" data-trigger="hover" data-content="&lt;img src='http://www.groovycandies.com/pc/catalog/8992_General.jpg'&gt;" data-original-title="" title="">Raspberry Gummi Bears</a>

    <input type="checkbox" id="1" name="Raspberry Gummi Bears" style="display:none;">


    <a style="cursor:pointer;" class="candy list-group-item" data-id="2" data-toggle="popover" data-placement="top" data-html="true" data-trigger="hover" data-content="&lt;img src='http://www.groovycandies.com/pc/catalog/candy-runts-5.jpg'&gt;" data-original-title="" title="">Runts</a>

    <input type="checkbox" id="2" name="Runts" style="display:none;">

    ...
</ul>

然后我有javascript,当点击上面的<a>时,选中或取消选中正确的checkbox

<script type="text/javascript">

    $(".candy").click(function(){

        var id = $(this).data('id');

        var checkbox = $("#"+id).prop("checked");

        if ( checkbox != true) {

            $("#"+id).prop("checked", true);

            $(this).attr("class","candy list-group-item active");
        }
        else
        {
            $("#"+id).prop("checked", false);

            $(this).attr("class","candy list-group-item");
        }

    });

    </script>

现在我要提交表格...但在我这样做之前,我想再做一件事。我无法弄明白。

我想在php中创建一个我理解的数组:<?php $candies = array(); ?>,这将创建一个空白数组。现在,当选中复选框时,我想将复选框的名称添加到数组中。或者,如果取消选中该复选框,则会从阵列中删除它。我希望在提交表单之前发生这种情况。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

这可以在没有链接的情况下完成,而javascript,你只需要这样的标签即可:

通过记录输入name属性,使复选框成为一个数组。额外的[]将数组发送到服务器。

<p><label><input type="checkbox" name="candies[]" value="Raspberry Gummi Bears" /> Raspberry Gummi Bears</label></p>
<p><label><input type="checkbox" name="candies[]" value="Runts" /> Runts</label></p>

然后在PHP端:

<?php
$candies = $_POST["candies"];
print_r($candies);