首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在angularjs中限制复选框选择

如何在angularjs中限制复选框选择
EN

Stack Overflow用户
提问于 2017-07-03 18:38:02
回答 3查看 1.3K关注 0票数 1

我在一个屏幕上有10个复选框。我只想选中5个复选框。如果我选中5个以上的复选框,我需要显示一条警告消息,"select only 5 checkboxes“。

jsfiddle

代码语言:javascript
运行
复制
var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    
    $scope.items = [{
        id: 1,
        title: 'item1',
        selected: true
    },{
        id: 2,
        title: 'item2',
        selected: false
    },{
        id: 3,
        title: 'item3',
        selected: false
    },{
        id: 4,
        title: 'item4',
        selected: false
    },{
        id: 5,
        title: 'item5',
        selected: false
    },{
        id: 6,
        title: 'item6',
        selected: false
    },{
        id: 7,
        title: 'item7',
        selected: false
    },{
        id: 8,
        title: 'item8',
        selected: false
    },{
        id: 9,
        title: 'item9',
        selected: false
    },{
        id: 10,
        title: 'item10',
        selected: false
    }
    ];
    
    
              
}
代码语言:javascript
运行
复制
<div ng-controller="MyCtrl">

    <div ng-repeat="item in items">
        <input id="{{ item.id }}"
               type="checkbox"
               ng-model="item.selected"
               ng-checked="item.selected" />
    <label for="{{ item.id }}" >{{ item.title }}</label>
</div>
</div>

单击复选框本身时,我需要显示警告消息。我一次只需要选择5个复选框。不超过5个。请帮帮我,我怎么做?

EN

回答 3

Stack Overflow用户

发布于 2017-07-03 18:46:25

我建议给他们提供类,然后使用js选择类,并计算选择了多少个类:true

代码语言:javascript
运行
复制
if($('#myclass option:selected').length() > 4){
    alert("WARNING")
}
票数 0
EN

Stack Overflow用户

发布于 2017-07-03 18:46:32

您可以在foreach onclick中对选中的复选框进行计数,如果计数>5,则显示警报

代码语言:javascript
运行
复制
$scope.checkSelected = function(item){
    var c = 0;
    angular.forEach(items, function(item, key) {
     if(item.selected){
      c++;  
     }   
    });
    if(c>5){
     item.selected = false;
     alert('Not more than 5');
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-07-03 19:10:10

您可以使用ng-change指令。

代码语言:javascript
运行
复制
<input id="{{ item.id }}"
           type="checkbox"
           ng-model="item.selected"
           ng-change="processChecked(item)" />

$scope.processChecked = function(item) {
    var checked = $scope.items.filter(function(i) {
      return i.selected;
    });

    if (checked.length > 5) {
      alert("more than 5!");
      item.selected = false; // undo last action
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44883495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档