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 相关文章推荐
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
js中将具有数字属性名的对象转换为数组
Mar 06 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
Mar 10 Javascript
javascript 快速排序函数代码
May 30 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 Javascript
AngularJS基础 ng-keydown 指令简单示例
Aug 02 Javascript
简单理解vue中el、template、replace元素
Oct 27 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
vue.js的computed,filter,get,set的用法及区别详解
Mar 08 Javascript
详解vue.js下引入百度地图jsApi的两种方法
Jul 27 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 Javascript
vue实现前端列表多条件筛选
Oct 26 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
PHP5 安装方法
2006/10/09 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
VBScript版代码高亮
2006/06/26 Javascript
再探JavaScript作用域
2014/09/24 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
jQuery知识点整理
2015/01/30 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
js+html制作简单验证码
2017/02/16 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Python生成词云的实现代码
2020/01/14 Python
Python 实现微信自动回复的方法
2020/09/11 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
工程部主管岗位职责
2013/11/17 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书