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 相关文章推荐
JavaScript delete 属性的使用
Oct 08 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
Feb 27 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
Jun 04 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
对Web开发中前端框架与前端类库的一些思考
Mar 27 Javascript
js+html5操作sqlite数据库的方法
Feb 02 Javascript
jQuery siblings()用法实例详解
Apr 26 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
微信小程序获取用户绑定手机号方法示例
Jul 21 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
Feb 13 Javascript
用Angular实现一个扫雷的游戏示例
May 15 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
Yii实现自动加载类地图的方法
2015/04/01 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
smarty中常用方法实例总结
2015/08/07 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
python 中文字符串的处理实现代码
2009/10/25 Python
Python采集腾讯新闻实例
2014/07/10 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
珍珠奶茶店创业计划书
2014/01/11 职场文书
教师绩效工资方案
2014/02/01 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
2016年公司新年寄语
2015/08/17 职场文书
公司管理建议书
2015/09/14 职场文书
提档介绍信范文
2015/10/22 职场文书
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang
Java存储没有重复元素的数组
2022/04/29 Java/Android