获取一系列已检查的复选框,通过php生成

时间:2018-01-10 05:27:14

标签: javascript php jquery html checkbox

我通过php动态生成多个复选框的列表。

<input type=\"checkbox\" name=\"quetext[]\" value=".$row_all_que['id'].">

将数据发布到php的按钮在开始时被禁用。

<input type="button" value="Next" class="btn btn-primary btn-lg btn-block" id="send-que" disabled>

我希望在选中至少一个复选框时启用它。我该怎么做?

此外,一旦我选择了所需的复选框,我需要创建这些复选框的数组并将它们的值传递给php。

编辑1:

由于数据来自我的服务器通过ajax调用,因此复选框元素是动态生成的,因为我在document.ready()中编写的代码没有被执行。 我将代码移到了ajax调用的'success'函数中,并且在选中复选框时启用/禁用按钮现在工作正常。

这是我所做的ajax调用的jquery代码片段:

$.ajax({
        type: "POST",
        url: "ajaxData.php",
        data: data,

        success: function(data) {
            $('.quedata').html(data);
            var checkboxes = $('.quedata .ques-box');
            checkboxes.change(function(){
                $('#send-que').prop('disabled', !checkboxes.is(":checked"));
            });
        }
    });

这里的'quedata'类是我的tbody元素,其中的复选框正在生成。

这是HTML结构:

<table class="table table-striped" style="margin-top: 50px;">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Question</th>
                        <th>Mark(s)</th>
                        <th><input type="checkbox" disabled></th>
                    </tr>
                </thead>
                <tbody class="quedata">
                </tbody>
            </table>

编辑2:已解决

在我的ajax调用的成功部分中包含代码解决了它,我得到了我想要的输出。我已经发布了一个包含代码的答案。

1 个答案:

答案 0 :(得分:0)

我稍微编辑了一下复选框元素,并为其添加了一个类:

<input type=\"checkbox\" name=\"quetext[]\" class=\"ques-box\" value=".$row_que['id'].">

这是我所做的ajax调用的jquery代码片段:

$.ajax({
    type: "POST",
    url: "ajaxData.php",
    data: data,

    success: function(data) {
        $('.quedata').html(data);
        var checkboxes = $('.quedata .ques-box');
        checkboxes.change(function(){
            $('#send-que').prop('disabled', !checkboxes.is(":checked"));
        });
    }
});

这是数组生成代码:

$(document).ready(function() {

    $('#send-que').click(function(){
        var checked = [];
        $('.ques-box:checked').each(function(){
            checked.push($(this).val());
        });
        for(var i=0; i<checked.length; i++) {
            alert(checked[i]); //Check if values are added
        }
    });
});

很抱歉在发布之前缺乏研究,这是我在stackoverflow上的第一个问题。