javascript - 单击服务复选框时隐藏和显示活动复选框
问题描述
PHP
<?php
//for service 1
$all_activities = "select * from activity join displayserviceactivitymap on activity.activity_id = displayserviceactivitymap.activity_id right join services on services.service_id = displayserviceactivitymap.service_id";
$all_activities = $conn->query($all_activities) or die ($conn>error.__LINE__);
$activities = [];
while ($row = $all_activities->fetch_assoc()) {
$activities[] = $row;
}
$repeated = 'repeated';
foreach ($activities as $act) {
if($act['servicename'] != $repeated){
echo '<br><input type="checkbox" name="arr['.$act['service_id'].'][service]" value="'.$act['service_id'].'" id="'.$act['service_id'].'">'.$act['service_id'].$act['servicename'].'<br>';
$repeated = $act['servicename'];
}
if($act['activity_id'] != '')
echo '<input type="checkbox" name="arr['.$act['service_id'].'][activity][]" value="'.$act['activity_id'].'" id="'.$act['activity_id'].'">'.$act['nameofactivity'].'<br>';
}
?>
我的代码的输出是
所得税
- 返回
- 填充
消费税
- 形式
- 返回
- GSTR
- TDS
- 应用
- 退款
在这里,Incometax、GST、TDS 是服务,其他是服务的相关活动。我想在选中复选框时显示活动并在取消选中复选框时隐藏。
解决方案
请尝试运行整个代码以便更好地理解
<?php
function array_group(array $data, $by_column) {
$result = [];
foreach ($data as $item) {
$column = $item[$by_column];
unset($item[$by_column]);
if (isset($result[$column])) {
$result[$column][] = $item;
} else {
$result[$column] = array($item);
}
}
return $result;
}
$activities = array(
array('service_id' => '1',
'servicename' => 'Incometax',
'activity_id' => '1',
'nameofactivity' => 'Return'),
array('service_id' => '1',
'servicename' => 'Incometax',
'activity_id' => '2',
'nameofactivity' => 'filling')
);
$activities = array_group($activities, 'servicename');
?>
<link href = "https://code.jquery.com/ui/1.12.0/themes/smoothness/jquery-ui.css" rel = "stylesheet" />
<script src = "https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<?php foreach ($activities as $key => $act) { ?>
<div id="accordion">
<h3>
<label for='product-44-44'>
<input type='checkbox' name="arr[<?php echo $act[0]['service_id']; ?>][service]" value="<?php echo $act[0]['service_id']; ?>" id="<?php echo $act[0]['service_id']; ?>"/>
<?php echo $key; ?>
</label>
</h3>
<div class="columns">
<?php foreach ($act as $value) { ?>
<div class="d1">
<label>
<input type="checkbox" name="arr[<?php echo $value['service_id']; ?>][activity][]" value="<?php echo $value['activity_id']; ?>" id="<?php echo $value['activity_id']; ?>">
<?php echo $value['nameofactivity']; ?>
</label>
</div>
<?php } ?>
</div>
</div>
<?php } ?>
<script>
$("#accordion")
.accordion({
collapsible: true,
active: false,
heightStyle: "content",
beforeActivate: function (event, ui) {
var oldInput = ui.oldHeader.find('input');
oldInput.prop('checked', !oldInput.prop('checked')) // this bit unchecks when the accordion is closed
var newInput = ui.newHeader.find('input');
// this bit checks when the accordion is opened
newInput.prop('checked', !newInput.prop('checked'))
}
}
);
</script>
推荐阅读
- angular - Angular如何知道请求是否超时超过三倍?
- ios - 在我自己的应用程序停止从 RPScreenRecorder 接收视频缓冲区后,iOS 屏幕录像机显示媒体服务失败错误
- oozie - error=2, oozie 在 hue4.2 中执行 shell 时没有这样的文件或目录
- scala - Scala 集合总和可用于重载加法
- react-apollo - 反应阿波罗突变和乐观更新
- google-cloud-platform - 如何在 Google Cloud Platform 上安装 32bit(x86/i386/i686) ubuntu 16.04?
- .net - 如果我删除 4.6.2 目标开发的“.NET 框架 4.7”
- html - FreeCodeCamp:CSS 样式元素中的错误:“你的 h2 元素应该是蓝色的”
- java - Java - 如何在 barteksc/AndroidPdfViewer 库中制作缩放按钮?
- android - firebase 是否仅限于显示 4kb 文件 JSON 响应?