手动触发事件实现checkbox的选中与取消

  1. 要实现的效果
    如下图所示,当点击li元素的时候,实现左侧checkbox的选中和取消,并且监测选中订单的数量和金额变化,将数据实时绑定到下方的“选择订单”和“金额”上面。


    1.png
  2. dom结构
    strVar += "<li class="mui-table-view-cell" data-flag = "0" onclick="onListClick(this)">";
    strVar += "<a class="mui-navigate-right">";
    strVar += "<div class="mui-checkbox mui-pull-left checkboxArea">";
    strVar += "<input name="checkbox" value="" type="checkbox" data='"+JSON.stringify(temp)+"'>";
    strVar += "</div>";
    strVar += "<div class="mui-pull-right tixianInfo" >";
    strVar += "<p class="orderByInfo mui-clearfix">";
    strVar += "<span class="orderByName mui-pull-left">"+temp.ShareClientName+"</span>";
    strVar += "<span class="orderTime mui-pull-right">"+temp.AddTime.split(' ')[0]+"</span>";
    strVar += "</p>";
    strVar += "<p class="proInfo">";
    strVar += "<span class="ProName">"+temp.ProName+"</span>";
    strVar += "<span class="proPrice">¥"+temp.TrueTotal+"</span>";
    strVar += "<span class="proCount">x"+temp.Number+"</span>";
    strVar += "</p>";
    strVar += "<p class="orderTiCheng">此订单获得提成:¥"+temp.Money+"</p>";
    strVar += "</div>";
    strVar += "</a>";
    strVar += "</li>";

  3. js部分
    //observeChange用来监测checkbox的change事件,并进行逻辑处理
    function observeChange(){
    var list = document.getElementById('list');
    //监测所有inputcheckbox)的变化
    mui('#list').on('change','input',function(){
    //选中的checkbox的数量
    var checkedbox = list.querySelectorAll('input[type="checkbox"]:checked');
    var count = checkedbox.length;
    //将选中的checkbox的数量赋值给底部的选择订单
    orderCount.innerHTML = count;//orderCount即为'选择订单'

             var totalMoney = 0;
             //该数组用来存储选中订单的订单号
             SelectIDSArray = [];
             for(var i = 0;i<checkedbox.length;i++){
                 var item = checkedbox[i];
                 //item是通过ajax从后台请求的订单数据,该数据为JSON数据。
                 var obj = JSON.parse(item.getAttribute('data'));
         
                 //将选中的订单ID存储起来
                 SelectIDSArray.push(obj.OrderNum);
                 totalMoney += parseFloat(obj.Money);
             }
             tixianMoney.innerHTML = '¥'+totalMoney.toFixed(2);      
          });
     }
     
     //onListClick用来手动触发checkbox的change事件,切换checkbox的选中和取消
     function onListClick(obj){
         var flag = obj.getAttribute('data-flag');
         if(flag == 0){
             $(obj).find('input')[0].checked = true;
             obj.setAttribute('data-flag',1);
     
             $($(obj).find('input')[0]).trigger('change');
         }else{
             $(obj).find('input')[0].checked = false;
             obj.setAttribute('data-flag',0);
             $($(obj).find('input')[0]).trigger('change');
         }
     }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • jQuery获取Select选择的Text和Value: 语法解释: 1. $("#select_id").cha...
    owen_he阅读 7,372评论 0 3
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,542评论 1 10
  • 一)jQuery九类选择器【参见jQueryAPI.chm手册】 目的:通过九类选择器,能定位web页面(HTML...
    奋斗的老王阅读 4,629评论 0 51
  • 关注简书很久了,特别喜欢在这个平台上,看着大家写的点点滴滴,其实我的文采并不是特别的好,所以,这篇文章,也纯当是我...
    主持人三石阅读 1,855评论 0 0

友情链接更多精彩内容