正在检查CheckBox但没有执行功能

时间:2017-08-25 14:33:28

标签: javascript php jquery html checkbox

我目前正在使用php循环在数据库中生成面板。 在每个面板上都有一个复选框。选中后,它会检查可折叠面板中的所有复选框。

当面板标题中的复选框检查面板中的复选框时,它意味着运行一个更新我的数据库的功能,说明该复选框。当您按下可折叠面板时,该功能可以手动复选框。但是当你从更高级别检查框并检查所有方框时,它不会运行我输入的onchange功能。

有人可以帮忙吗?

谢谢, 克里斯蒂安

PHP:

foreach ($results3 as $table3) {
        $output_string .= "<div class=\"panel-inner\">\n";
        $output_string .= "<div class=\"row\">\n";
        $output_string .= "<div class=\"col-sm12\">\n";
        $output_string .= "<div class=\"panel-body\">\n";
        $output_string .= "<h4 class=\"panel-title\">\n";
        $output_string .= "<a>$table3[Call_Flow]</a>\n";
        $output_string .= "<input class=\"mycheckbox\" type=\"checkbox\" value=\"$table3[Test_ID]\" onchange=\"adds(tccb$j)\" id=\"tccb$j\"/>\n";
        $output_string .= "</h4>\n";
            $output_string .= "</div>\n";
        $output_string .= "<div id=\"collapseflow$j\" class=\"panel-body collapse\">\n";

HTML:

<div id="check">

    </div>

    <script>
    function adds(id) {

    var value = $(id).val()

        jQuery.ajax({
            url: "selection_update.php",
            data: {"value": value},
            type: "POST",
            dataType: 'json',
                success:function(responce){
                $("#check").html(responce);
            }
        });
    }
    </script>

编辑:

这是我用来检查所有孩子复选框的代码。

$output_string .= "<script type=\"text/javascript\" language=\"javascript\">\n";
$output_string .= "function checkCheckboxes( id, pID ){\n";
$output_string .= "$('#'+pID).find(':checkbox').each(function(){\n";
$output_string .= "jQuery(this).prop('checked', $('#' + id).is(':checked'));\n";
$output_string .= "});\n";     
$output_string .= "}\n";
$output_string .= "</script>\n";

2 个答案:

答案 0 :(得分:1)

您需要将adds(param)作为字符串发送。并且因为您正在使用它来获取DOM元素,所以您需要将标签添加到

更改此行:

$output_string .= "<input class=\"mycheckbox\" type=\"checkbox\" value=\"$table3[Test_ID]\" onchange=\"adds(tccb$j)\" id=\"tccb$j\"/>\n";

进入这一行:

$output_string .= "<input class=\"mycheckbox\" type=\"checkbox\" value=\"$table3[Test_ID]\" onchange=\"adds('#tccb$j')\" id=\"tccb$j\"/>\n";

答案 1 :(得分:1)

那是因为onchange仅对用户点击做出反应,而不是简单的价值变化。要解决此问题,您需要手动触发onchange功能。

因此,在您的oarent的onchange功能中,请确保选择相关的孩子并在其上调用.onchange()

以下是一个示例,其中一个复选框更改了另一个,而没有.onchange()调用:

https://jsfiddle.net/c1zwek1u/

这就是:

https://jsfiddle.net/c1zwek1u/1/

请注意,当孩子的值发生变化时,它会提醒您。

对于多个孩子,您只需要遍历该群组并在每个孩子上单独调用它,如下所示:

https://jsfiddle.net/c1zwek1u/3/

在Jquery中,您可以像$(selector).trigger('change');

那样触发更改