js动态获取子复选项并设计全选及提交的实现方法


Posted in Javascript onJune 24, 2016

在做项目的时候,会遇到根据父选项,动态的获取子选项,并列出多个复选框,提交时,把选中的合并成一个字符提交后台

本章将讲述如何通过js控制实现该操作:

1:设计父类别为radio,为每一个radio都加上onclick事件,并默认类别1为选择状态。

<input type="checkbox" name="selectall" id="selectall" onClick="selectAll();" checked="checked"/>全选<br>
<input type="radio" name="lb" id="lb" value="1" onclick="getZlb(1);" checked="checked"/>类别1 
<input type="radio" name="lb" id="lb" value="2" onclick="getZlb(2);"/>类别2 
<input type="radio" name="lb" id="lb" value="3" onclick="getZlb(3);"/>类别3

2:页面初加载时,要根据选中的父类别显示子类别,在点击按钮时,也要获取子类别,故写成同一个方法,并在页面加载结束后调用

window.onload=getZlb();

3:获取子类别的js方法,通过ajax方法动态获取后台数据

/**
 * 获取子类别,在页面加载结束后也执行显示
 */
 function getZlb(){
  //通过名字获取
  var obj = document.getElementsByName("lb");
    for(var i=0; i<obj.length; i ++){
      if(obj[i].checked){
        getZlbNews(obj[i].value);
      }
  }
 }

function getZlbNews(){
    (通过Ajax获取map类型的数据;返回数据为result,json格式)
    var json = eval("("+result+")"); //转化为json对象
    //通过ID获取子类型要显示的区域
    var parent=document.getElementById('xsqy');
    //把子区域置空,防止下次追加
    parent.innerHTML='';
    var p=0;
    var span="";
    //把全选打上勾
    document.getElementById("selectall").checked=true;
    for(var i in json){
     p++;
     span="<SPAN style=\"display:inline-block; width: 75px;\"><input type=\"checkbox\" checked=\"checked\" onClick=\"checkSelectAll();\" name=\"zlb\" value=\""+i+"\">"+json[i]+"</SPAN>";
     //当子复选框超过11个,则换行
     if(p%11==0){
       span=span+"<br>";
     }
     //把子复选框一个个追加到子区域
     parent.innerHTML=parent.innerHTML+span;
    } 
}

4:后台逻辑,

/**
   * 通过子类别,返回Map格式 Map<代码,名称>
   * @return
   */
  public String getZLb(){
    Map<Integer, String> zlb=service.getZLB();
    //把map转化为json格式
    JSON a= JSONSerializer.toJSON(zlb);
    return a.toString();
  }

5:js控制全选,及全选是否选中的逻辑,及提交时如何合并选中的代码

/**
  * 全选或是全部取消
  */
 function selectAllDz(){
   var checkboxs = document.getElementsByName("zlb");
   for(var i=0; i<checkboxs.length; i++) {


//根据全选的按钮是否选中来控制子类别是否选中
     checkboxs[i].checked = document.getElementById("selectall").checked;
   }
 }
/**
 * 判断子类别是否全选,是全选则全选按钮选中,否则不选中
 */
 function checkSelectAll(){
   var checkboxs = document.getElementsByName("zlb");
   var isSelectAll=true;
   for(var i=0; i<checkboxs.length; i++) {
     if(checkboxs[i].checked ==false){
       isSelectAll=false;
     }
   }
   if(isSelectAll==false){
     document.getElementById("selectall").checked=false;
   }else{
     document.getElementById("selectall").checked=true;
   }
 }
/**
* 拼接选中的ID,以逗号分隔
**/
function getAllIdStr(checkName){
  var select = document.getElementsByName(checkName);
   var idStr = new Array();
   for(var i=0; i<select.length; i++){
     if(select[i].checked==true){
       idStr = idStr.concat(select[i].value);
     }
   }
   return idStr.join(',');
}

6:在进行下一步操作时,如提交时,把全选的变成一个字符,赋值给一个隐藏的文本框,用来提交到后台

//调用拼接ID的方法,把要操作的元素名字传过去
var allZlb=getAllIdStr('zlb');
//创建一个隐藏的文本框,把拼接后的赋之,用于后台获取
document.getElementById('allZlbStr').value=allZlb;

以上只是个人拙见,如有更好的处理建议,请告知。

以上就是小编为大家带来的js动态获取子复选项并设计全选及提交的实现方法全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
Windows 系统下安装和部署Egret的开发环境
Jul 31 Javascript
仿JQuery输写高效JSLite代码的一些技巧
Jan 13 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
基于jquery插件实现拖拽删除图片功能
Aug 27 Javascript
AngularJS 单元测试(一)详解
Sep 21 Javascript
详解vue-validator(vue验证器)
Jan 16 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 Javascript
js制作提示框插件
Dec 24 Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 #Javascript
正则表达式(语法篇推荐)
Jun 24 #Javascript
javascript弹出窗口中增加确定取消按钮
Jun 24 #Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 #Javascript
JQuery DIV 动态隐藏和显示的方法
Jun 23 #Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 #Javascript
再次谈论Javascript中的this
Jun 23 #Javascript
You might like
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
求得div 下 img的src地址的js代码
2007/02/28 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
彻底理解Python list切片原理
2017/10/27 Python
import的本质解析
2017/10/30 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Python根据服务获取端口号的方法
2019/09/25 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
火灾现场处置方案
2014/05/28 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
新员工辞职信范文
2015/05/12 职场文书
《雷雨》教学反思
2016/02/20 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript