Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选中复选框但不执行功能_Javascript_Php_Jquery_Html_Checkbox - Fatal编程技术网

Javascript 选中复选框但不执行功能

Javascript 选中复选框但不执行功能,javascript,php,jquery,html,checkbox,Javascript,Php,Jquery,Html,Checkbox,我目前正在使用php循环从数据库生成面板。 在每个面板上都有一个复选框。选中时,它将选中可折叠面板中其下的所有复选框 当面板中的复选框被面板标题中的复选框选中时,意味着运行一个更新我的数据库的函数,表示该复选框已选中。当您手动按下可折叠面板并选中复选框时,该功能将起作用。但是,当您从更高的级别选中该框并选中它下面的所有框时,它不会运行我输入的onchange函数 有人能帮忙吗 谢谢, 克里斯蒂安 PHP: foreach($results3为$table3){ $output\u字符串=“\n”

我目前正在使用php循环从数据库生成面板。 在每个面板上都有一个复选框。选中时,它将选中可折叠面板中其下的所有复选框

当面板中的复选框被面板标题中的复选框选中时,意味着运行一个更新我的数据库的函数,表示该复选框已选中。当您手动按下可折叠面板并选中复选框时,该功能将起作用。但是,当您从更高的级别选中该框并选中它下面的所有框时,它不会运行我输入的onchange函数

有人能帮忙吗

谢谢, 克里斯蒂安

PHP:

foreach($results3为$table3){
$output\u字符串=“\n”;
$output\u字符串=“\n”;
$output\u字符串=“\n”;
$output\u字符串=“\n”;
$output\u字符串=“\n”;
$output\u string.=“$table3[调用\u流]\n”;
$output\u字符串=“\n”;
$output\u字符串=“\n”;
$output\u字符串=“\n”;
$output\u字符串=“\n”;
HTML:


函数添加(id){
var值=$(id).val()
jQuery.ajax({
url:“selection_update.php”,
数据:{“值”:值},
类型:“POST”,
数据类型:“json”,
成功:功能(响应){
$(“#检查”).html(响应);
}
});
}
编辑:

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

$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";
$output\u string.=“\n”;
$output_string.=“函数复选框(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\u字符串=“\n”;
您需要将adds(param)作为字符串发送。因为您使用它来获取DOM元素,所以需要将hashtag添加到其中

更改此行:

$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";
$output\u string.=“\n”;
进入该行:

$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";
$output\u string.=“\n”;

这是因为
onchange
只对用户单击做出反应,而不是简单的值更改。要解决这个问题,您需要手动触发
onchange
功能

因此,在oarent的onchange函数中,确保选择了相关的子项并对它们调用
.onchange()

下面是一个示例,其中一个复选框更改另一个复选框,而不使用
.onchange()
调用:

下面是:

请注意,当子对象的值发生更改时,它会提醒您

对于多个子项,您只需在组中迭代,并对每个子项单独调用它,如下所示:


在Jquery中,您可以像这样触发更改
$(选择器)。触发器('change');

PHP代码是无用的。显示它输出的HTML,因为这是我们需要看到的。您在哪里执行adds(…)?您是否错过了checkbox@edgaronar90中的
onchange
处理程序?完全错过了!我的badook很酷,这是正确的:)当您有多个孩子时会发生什么?我目前正在按哪个div分组检查我的复选框。我编辑了我的帖子,以显示我当前如何检查和取消检查我的家长检查我编辑了我的答案,以展示如何使用循环处理多个子项。由于您使用的是JQuery(尽管您不需要),我添加了一行关于如何使用JQuery触发更改的内容。