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之更有效率的字符串替换
Aug 02 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
Apr 07 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
Jan 06 Javascript
javascript的回调函数应用示例
Feb 20 Javascript
javascript的alert box在java中如何显示多行
May 18 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
jquery马赛克拼接翻转效果代码分享
Aug 24 Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
微信小程序如何获取群聊的openGid以及名称详解
Jul 17 Javascript
java实现单链表增删改查的实例代码详解
Aug 30 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 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最新CPU的性能排名
2020/04/02 数码科技
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
JS实现self的resend
2010/07/22 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
Python实现线程池代码分享
2015/06/21 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
Python 如何展开嵌套的序列
2020/08/01 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
女性时尚网购:Chic Me
2019/07/30 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
甜点店创业计划书
2014/01/27 职场文书
《乞巧》教学反思
2014/02/27 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
护士医德医风心得体会
2016/01/25 职场文书
《实心球》教学反思
2016/02/23 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
灵能百分百第三季什么时候来?
2022/03/15 日漫