js实现多级复选框的交互

- <script type="text/javascript">
- function checkone(element){
- var checkstatus=element.checked
- var checkid=element.id
- var checkname=element.name
- if (checkstatus == false && document.getElementById(checkname)){
- document.getElementById(checkname).checked=checkstatus//document.getElementById(checkname)表示全选按钮
- }
- else if (document.getElementById(checkname)){
- var samelevelgroup=document.getElementsByName(checkname)
- var allchecked=true
- for (var i=0;i<samelevelgroup.length;i++){
- if (samelevelgroup[i].checked==false){
- allchecked=false
- }
- }
- if ( allchecked==true ){
- document.getElementById(checkname).checked=true
- }
- }
- if (document.getElementById(checkname)){
- checkone(document.getElementById(checkname))
- }
- }
- function check(element)
- {
- {# 全选用id,全选下面的复选框用name对应#}
- var checkstatus=element.checked
- var checkid=element.id
- checkone(element)
- var checkgroups_down=document.getElementsByName(checkid)
- for (var i = 0; i < checkgroups_down.length; i++)
- {
- checkgroups_down[i].checked=checkstatus
- var childid= checkgroups_down[i].id
- if (document.getElementsByName(childid).length>1){//如果下面有name和自己的id一致,就认为这是分组全选,下面还有子项
- check(document.getElementById(childid))
- }
- }
- }
- function submittestsuit() {
- var allcase=document.getElementsByTagName("input")
- var selectcase=[]
- for (var i=0;i<allcase.length;i++){
- if ((allcase[i].checked == true) && (allcase[i].id == "testcase")) {
- var filename=allcase[i].parentNode.previousSibling.previousSibling.innerHTML
- var functionname=allcase[i].parentNode.previousSibling.previousSibling.previousSibling.previousSibling.innerHTML
- {# alert(functionname)#}
- var caseinfo = {
- functionname:functionname,
- filename:filename
- }
- selectcase.push(caseinfo)
- }
- }
- if (selectcase.length < 1){
- alert("至少选择一个case!")
- }
- else{
- $.ajax({
- cache: true,
- type: "POST",
- url:"{% url "save_testsuit" %}",
- data:{caseinfos:JSON.stringify(selectcase)},// 你的formid
- async: false,
- error: function(request) {
- alert("保存失败");
- },
- success: function(data) {
- if(data.respcode==0){
- alert("测试套件已生成");
- var w = window.open();
- w.location=("{% url "runtestinfo" %}")
- }
- else{
- alert(JSON.stringify(selectcase))
- alert(data.msg);
- }
- }
- });
- }
- }
- </script>
- <div style="margin-bottom: 10px">
- <span style="margin-left: 10px">全选所有case </span>
- <input type="checkbox" id="groupcheck" onclick="check(this)">
- </div>
- <div>
- <table class="table table-hover">
- <tr style="background-color: #5bc0de">
- <th>用例描述</th>
- <th>测试方法名</th>
- <th>所属文件</th>
- <th>勾选要执行的用例</th>
- </tr>
- {# 全选是根据name和id进行联动的,上级的id和下级的name要一致#}
- {% for group in testcaselist.testcaseslist %}
- <tr style="background-color: #9acfea">
- <th>
- <span>{{ group.groupname }}</span>
- <span><input id="{{ group.groupname }}" name="groupcheck" type="checkbox" onclick="check(this)"></span>
- </th>
- </tr>
- {% for testcase in group.testcase %}
- <tr>
- <td width="35%">{{ testcase.desc }}</td>
- <td width="30%" id="functionname">{{ testcase.functionname }}</td>
- <td width="20%" id="filename">{{ testcase.filename }}</td>
- <td width="15%"><input id="testcase" name="{{ group.groupname }}" type="checkbox" onclick="check(this)"></td>
- </tr>
- {% endfor %}
- {% endfor %}
- </table>
- </div>
- <div style="margin-top: 20px">
- <button type="button" class="btn btn-default" onclick="submittestsuit()">生成测试套件</button>
- </div>
js实现多级复选框的交互的更多相关文章
- 模拟多级复选框效果的jquery代码
jquery做了个多级复选框的效果,代码总共就20+行就over了. 我又想用js来做一个看看,才写了几个方法就写不动了,兼容性要考虑很多,而且代码量直线上升. 主要分享下jquery的这个效果的实现 ...
- 模拟多级复选框效果--jquery
今天又次体会到jquery的强大了,做了个多级复选框的效果,代码总共就20+行就over了. 我又想用js来做一个看看,才写了几个方法就写不动了,兼容性要考虑很多,而且代码量直线上升. 主要分享下jq ...
- js获取checkbox复选框获取选中的选项
js获取checkbox复选框获取选中的选项 分享下javascript获取checkbox 复选框获取选中的选项的方法. 有关javascript 获取checkbox复选框的实例数不胜数.js实现 ...
- Js动态添加复选框Checkbox
Js动态添加复选框Checkbox的实例方法!!! 首先,使用JS动态产生Checkbox可以采用如下类似的语句: var checkBox=document.createElement(" ...
- 用js判断一个复选框是否被选中
<html> <head> <title> 复选框全选.全不选.反选.必选一个 </title> ...
- js自定义修改复选框单选框样式,清除复选框单选框默认样式
之前做项目的时候,也遇到过需要按照设计稿把<input type="checkbox">和<input type="radio">的默认 ...
- 原生js实现三级复选框
工作中要做一个三级的复选框,用js实现了一下,从项目中把相关代码抽取出来了,有相关需求的可以参考一下.亲测可用. <!DOCTYPE html> <html> <head ...
- js操作checkbox(复选框)的方法总结
收集了一些用js代码操作checkbox复选框的代码,分享出来,供需要的朋友参考: <script> //复选框checkbox 处理方法 //搜集整理 www.jbxue.com fun ...
- JS获取页面复选框选中的值
function jqchk(){ //jquery获取复选框值 var chk_value =[]; $('input[class="sel"]:checked').each(f ...
随机推荐
- 转载:老生常谈C++中实参形参的传递问题
以下文章转载自:http://www.jb51.net/article/108390.htm 函数中参数的传递 这里说的传递当然是指 实参是如何传递给形参的啦 还挺复杂的~~~~~~~~⊙﹏⊙b汗,这 ...
- docker 报ls: cannot open directory software/: Permission denied
问题原因及解决办法 原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1.在运行容器的时候,给容器加特权,及加上 --privileged= ...
- ThinkPHP输入验证和I方法使用
在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了. ...
- 使用STM32CubeMX生成RTC工程[闹钟中断2]
在上次使用STM32CubeMX生成RTC工程[闹钟中断]基础上实现周期间隔的闹钟 一些场合需要周期性的闹钟 现在为了方便设置每十秒来一次. 备注: 当然可以直接修改HAL库static HAL_St ...
- 关于npm 包的发布
注册一个npm 账号,打开命令行输入 npm add user 然后登录 npm login 发布npm 包,在你要发布的包的目录下,在创建账号后需要认证邮箱,否则无法发布,发布同一个包,每次的版本需 ...
- react-native android 和ios 集成 jpush-react-native 激光推送
安装 $ npm install jpush-react-native --save # jpush-react-native 版本以后需要同时安装 jcore-react-native $ npm ...
- 使用expect解决shell交互问题
比如ssh的时候,如果没设置免密登陆,那么就需要输入密码.使用expect可以做成自动应答 1.expect检测和安装 sudo apt-get install tcl tk expect 2.脚本样 ...
- golang redis集群操作:redis-go-cluster
背景 感觉redis-cli desktop及其难用,最近用golang做了个redis查询工具,支持单例和集群操作,终于不再卡顿!!! 用到的包 "github.com/garyburd/ ...
- 关于php MD5加密 与java MD5 加密结果不一致的问题
针对PHP不是UTF-8编码导致的问题 public String md5(String txt) { try{ MessageDiges ...
- 关于vector变量的size,是一个无符号数引发的bug。LeetCode 3 sum
class Solution { public: vector<vector<int>> threeSum(vector<int>& a) { vector ...