Angular中checkbox实现复选

需求:实现点击子选项,父选项自动勾选,当子选项没有勾选,对应的父选项不勾选,并把勾选的对应的id发送出去。

效果图:

<!DOCTYPE html>
<html data-ng-app="App">
<head>
<script src=‘angular-1.3.0.js‘></script>

<script src="script2.js"></script>
</head>
<body data-ng-controller="AddStyleCtrl">

    <div>Choose Tags</div>
    <div>
        <div>You have choosen:</div>
        <hr>
        {{selected}}
          <table  class="table table-bordered table-striped table-center" style="margin-top: 20px;">
                <tbody>
                <tr data-ng-repeat="category in tagcategories">
                    <th class="inner" style="vertical-align: middle !important;">{{category.name }}
                        <input type="checkbox" id={{category.id}} name="{{category.name}}" ng-checked="isSelected(category.id)" ng-click="updateSelection($event,category.id)">
                    </th>
                    <td>
                        <span data-ng-repeat="tag in category.tags">
                                <input type="checkbox" id={{tag.id}} name="{{tag.name}}" ng-checked="isSelected(tag.id)" ng-click="updateSelection($event,tag.id,category.id)">
                                {{ tag.name }}
                        </span>

                    </td>
                </tr>

                </tbody>
            </table>
    </div>

<pre>{{selected|json}}</pre>

</body>
</html>

script.js

    /**
     * Created by zh on 20/05/15.
     */
    // Code goes here

    var iApp = angular.module("App", []);

    iApp.controller(‘AddStyleCtrl‘, function($scope){

        $scope.tagcategories = [
            {
                id: 9,
                name: ‘Color‘,
                tags: [
                    {
                        id:1,
                        name:‘color1‘
                    },
                    {
                        id:2,
                        name:‘color2‘
                    },
                    {
                        id:3,
                        name:‘color3‘
                    },
                    {
                        id:4,
                        name:‘color4‘
                    },
                ]
            },
            {
                id:10,
                name:‘Cat‘,
                tags:[
                    {
                        id:5,
                        name:‘cat1‘
                    },
                    {
                        id:6,
                        name:‘cat2‘
                    },
                ]
            },
            {
                id:11,
                name:‘Scenario‘,
                tags:[
                    {
                        id:7,
                        name:‘Home‘
                    },
                    {
                        id:8,
                        name:‘Work‘
                    },
                ]
            }
        ];
        console.log($scope.data);

        $scope.selected = [];

        var updateSelected = function(action,id){
            if(action == ‘add‘ && $scope.selected.indexOf(id) == -1){
                $scope.selected.push(id);
            }
            if(action == ‘remove‘ && $scope.selected.indexOf(id)!=-1){
                var idx = $scope.selected.indexOf(id);
                $scope.selected.splice(idx,1);
                $scope.selectedTags.splice(idx,1);
            }
        }

        $scope.updateSelection = function($event, id){
            var array=[];
            var checkbox = $event.target;
            var input1=checkbox.parentNode.parentNode.parentNode.getElementsByTagName(‘th‘)[0].getElementsByTagName(‘input‘)[0];
            var action = (checkbox.checked?‘add‘:‘remove‘);
            updateSelected(action,id);
            var data=$event.target.parentNode.parentNode.getElementsByTagName(‘input‘);
            angular.forEach(data,function(item,index,ary){

                if(data[index][‘checked‘]==true){
                    array.push(data[index]);
                }

            })
            if(array.length==0){
                input1.checked=false;
                var action2 = (input1.checked?‘add‘:‘remove‘);
                updateSelected(action2,parseInt(input1.getAttribute(‘id‘)));
            }else{
                input1.checked=true;
                var action2 = (input1.checked?‘add‘:‘remove‘);
                updateSelected(action2,parseInt(input1.getAttribute(‘id‘)));
            }

        }

        $scope.isSelected = function(id){
            return $scope.selected.indexOf(id)>=0;
        }
    });

参考http://www.cnblogs.com/CheeseZH/

时间: 2024-10-28 23:45:20

Angular中checkbox实现复选的相关文章

Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用

                                         Default.aspx 网页界面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.

如何取消xendesktop7.x中发布出来的windows 7中的文件复选框

最近很多用户反映通过Citrix XenDekstop7.x的版本发布出来的windows7会默认开启文件复选框,如下图: 很多用户会感觉不习惯,当然关闭起来也很简单,打开Windows Exploer->工具->文件夹选项->取消勾选"使用复选框以选择项"即可! 很多用户又有了疑问:为何我的模板里没有勾选此项但是发布出来的VM默认勾选此项呢? 其实很简单这个主要是针对触屏设备访问而开启的,在安装VDA7.x后会默认改为Tablet PC模式 http://windo

jQuery实现checkbox(复选框)选中、全选反选代码

谁都知道 在html 如果一个复选框被选中 是 checked="checked". 但是我们如果用jquery alert($("#id").attr("checked")) 会提示您是true而不是checked 所以很多朋友判断  if($("#id").attr("checked")=="true") 这个是错误的,其实应该是 if($("#id").attr

实现listview中checkbox的多选与记录

android UI进阶之实现listview中checkbox的多选与记录 今天继续和大家分享涉及到listview的内容.在很多时候,我们会用到listview和checkbox配合来提供给用户一些选择操作.比如在一个清单页面,我们需要记录用户勾选了哪些条目.这个的实现并不太难,但是有很多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享. ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容. 首先,写个item的xml布局,里

android UI进阶之实现listview中checkbox的多选与记录

今天继续和大家分享涉及到listview的内容.在很多时候,我们会用到listview和checkbox配合来提供给用户一些选择操作.比如在一个清单页面,我们需要记录用户勾选了哪些条目.这个的实现并不太难,但是有很多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享. ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容. 首先,写个item的xml布局,里面放置一个TextView和一个CheckBox.要注意的时候,这里我设置了C

jQuery v1.10.2如何判断checkbox(复选框)是否被选中

做项目时,我们经常会用到jquery来做一些判断,今天自己遇上判断复选框是否选中,然后搜索查看,发现现在网上的都是错误的,下面罗列错误的: 1.$("#id").attr("checked")=="true"  错 2.$("#id").attr("checked")=="checked" 错 3.$("#id").attr("checked")=

ionic-CSS:ionic checkbox(复选框)

ylbtech-ionic-CSS:ionic checkbox(复选框) 1.返回顶部 1. ionic checkbox(复选框) ionic 里面的 Checkbox 和普通的 Checkbox 效果上其实相差不大,只是样式上有所不同. 以下实例演示了多个复选框的列表. 注意,每个选项的 item 类后需要添加 item-checkbox 类. 复选框可以使用 checkbox-assertive 来指定颜色. <ul class="list"> <li cla

在Servlet端获取html页面选中的checkbox值,request获取页面checkbox(复选框)值

html端代码: 适用人群: <input type="checkbox" name="crowd" value="幼儿">幼儿 <input type="checkbox" name="crowd" value="青少年">青少年 <input type="checkbox" name="crowd" value=&

html,javaScript中怎么控制复选框checkbox的全选,全不选,以及全选中,全选按钮选中,其中一个或者多个没选,则全选按钮不被选中

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ include file="/commons/jsp/htmtag.jsp"%> <html><head> <meta http-equiv="Content-Type"