首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在条件下选择或取消选中复选框

在条件下选择或取消选中复选框
EN

Stack Overflow用户
提问于 2017-01-05 05:04:52
回答 2查看 9.3K关注 0票数 3

请注意,我希望避免jquery,只使用角2。

我有一些自定义复选框,最初可以选择多个。我将选择的项存储在如下数组中:

代码语言:javascript
运行
AI代码解释
复制
    eventChkArr: any = [];
    updateChecked(value: any, event: any) {
        if (event.target.checked) {
          this.eventChkArr.push(value);
        }
        else if (!event.target.checked) {
          let index = this.eventChkArr.indexOf(value);
          this.eventChkArr.splice(index, 1);
        }
      }

当用户选择多个复选框时,会弹出一个模式(由于某种原因,该模式不会弹出)并询问他们是否要选择多个复选框。现在,我要做的是,如果用户点击没有按钮,那么只有最后点击按钮之前,模态弹出将保持选中,并在用户的进一步单击,只有一个复选框将被选中一次。如果他们点击“是”,那么可以选择多个复选框。但是,我怎样才能做到这一点,有帮助吗?蒂娅。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-05 06:21:19

https://plnkr.co/edit/yU4P3zsQ3QaH9Vby8M3I?p=preview

您可以将每个复选框的选中值保存在“eventTypeChkBox”数组中:

代码语言:javascript
运行
AI代码解释
复制
 eventTypeChkBox: Array<{chkBoxImageUrl: string, id: string, val: string, checked: boolean}> = [
    {chkBoxImageUrl: "http://www.w3schools.com/bootstrap/cinqueterre.jpg" ,id: "item-1", val: "1", checked: false},
    {chkBoxImageUrl: "http://www.w3schools.com/bootstrap/cinqueterre.jpg", id: "item-2", val: "2", checked: false},
    {chkBoxImageUrl: "http://www.w3schools.com/bootstrap/cinqueterre.jpg", id: "item-3", val: "3", checked: false},
    {chkBoxImageUrl: "http://www.w3schools.com/bootstrap/cinqueterre.jpg", id: "item-4", val: "4", checked: false}
  ];

现在您可以将“签入”(ngModel)的值放在每个复选框中:

代码语言:javascript
运行
AI代码解释
复制
<div *ngFor="let eventChk of eventTypeChkBox">
   <div class="col-md-3">
      <label class="btn-custom">
          <img src="{{eventChk.chkBoxImageUrl}}" alt="{{eventChk.val}}" class="img-check img-circle" [ngClass]="{'check': eventChk.isClassVisible } "
                       width="100" height="100">
                  <input  [(ngModel)]="eventChk.checked" (ngModelChange)="onModelChange(eventChk) type="checkbox" name="{{eventChk.id}}" id="{{eventChk.id}}" value="{{eventChk.val}}" class="hidden" autocomplete="off"
                         (change)="updateChecked(eventChk, $event); eventChk.isClassVisible = !eventChk.isClassVisible;">
                </label>
                <p>{{eventChk.val}}</p>
              </div>
            </div>

**如果您想使用(ngModel)指令:

1.您应该在您的“应用模块”中导入“FormsModule”:

代码语言:javascript
运行
AI代码解释
复制
import {FormsModule} from "@angular/forms";
@NgModule({
  imports: [ BrowserModule, FormsModule],
  declarations: [ App ],
  bootstrap: [ App ]
})
export class AppModule {}
  1. 您需要为每个‘复选框’输入添加不同的'name‘属性,这就是我在html中使用name=“{eventChk.id}}”(您需要唯一的名称)的原因。

当您有(ngModel)时,您可以控制检查的内容和没有检查的内容。

如果要检测模型更改,可以在模板和类上使用(ngModelChange)="onModelChange(eventChk)“:

代码语言:javascript
运行
AI代码解释
复制
 onModelChange(eventTypeChkBoxObj) {
    if(eventTypeChkBoxObj.checked) {
      if(this.getCheckedCount() == 2){
        let result = confirm("Multiple checkboxes?");
        if(!result) eventTypeChkBoxObj.checked = false;
      }  
    }

  }

要检查不需要“eventChkArr”的项值,可以筛选它们:

代码语言:javascript
运行
AI代码解释
复制
getCheckedValues() {
   return this.eventTypeChkBox.filter(obj => obj.checked).map(obj => obj.val)
}

经核对的obj计数:

代码语言:javascript
运行
AI代码解释
复制
 getCheckedCount():number{
    return this.getCheckedValues().length;
  }

例如:

代码语言:javascript
运行
AI代码解释
复制
 eventTypeChkBox = [{checked:true, val:1},{checked:true, val:2},{checked:false, val:3}]

getCheckedValues()将返回:

代码语言:javascript
运行
AI代码解释
复制
["1","2"]

祝好运!

票数 5
EN

Stack Overflow用户

发布于 2017-01-05 05:19:43

我建议你这样做:

代码语言:javascript
运行
AI代码解释
复制
<button *ngIf="eventChkArr.length > 1" (click)="popFisrtEvents()">Many choice ?</button>

其方法是:

代码语言:javascript
运行
AI代码解释
复制
popFisrtEvents() {
    this.eventChkArr.splice(0, this.eventChkArr.lentgh -2);
}

所以当你点击你的复选框时,你不会阻止用户.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41485885

复制
相关文章
vim/vi 怎么取消高亮 或 取消选中状态
在Vi里面如果要搜索某个关键字,只要在命令状态下键入/xxx就可以了,比如,我要搜索port的位置,我就键入: /port 然后回车,一个文件中,所有出现这个字样的地方都会被高亮显示。按n键,就可以自动把光标跳到下一个。如下图所示:
黑泽君
2018/12/06
8.9K1
JS控制批量选择/取消复选框
场景应用:在后台分页输出查询数据(如文章、评论),往往需要进行批量删除/审核等操作。后端程序需要读取操作的ID集合进行批量处理。而前端批量选择传入ID是最方便的使用方式。而批量传入通过使用复选框的[]方式传入数组给后端就是最便捷的办法了。直接上代码:
世纪访客
2018/08/02
9.8K0
JS控制批量选择/取消复选框
按钮随复选框选中与取消变换样式 原
//$("input:checkbox[value='1']").attr("checked","checked"); //首先根据后台传进来的value值来设置初始状态为选择还是不选中,如果value为1设置checked为true,注意true不要加引号,并找到最后一列改变class,如果值为0 改变class与html内容 //为checkbox加change事件 如果存在checked属性执行更换class,变化内容,设置checked为false,如果不存在checked属性则执行相应的代码。注意if里面要if($(this).attr("checked")不能写成if($(this).attr("checked")==true) 
tianyawhl
2019/04/04
1.4K0
ElementUI el-checkbox 点击Label不取消复选框的选中状态
在点击label的时候不取消复选框的状态 实现 将change事件改为click事件 <div class="grid-content bg-purple">
彼岸舞
2021/06/21
4.5K0
ElementUI el-checkbox 点击Label不取消复选框的选中状态
iCheck实现radio单选框点击选中/取消选中
iCheck插件,我就不详细介绍了,大家可以看官方的文档:http://www.bootcss.com/p/icheck/
德顺
2019/11/13
4.9K0
PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
我设置两个有序序列,分别存储对应的复选框和行内容。 我的行内容是用的label标签。
小蓝枣
2020/09/22
3.7K0
PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
jQuery限制复选框checkbox的选中次数
<div class="one"> <input type="checkbox" name="checkbox" value="A"> </div> <div class="two"> <input type="checkbox" name="checkbox" value="B"> </div> <div class="three"> <input type="checkbox" name="
明知山
2020/09/03
2.4K0
MFC list control 控件判断当前选中行,设置行选中,取消行选中[通俗易懂]
下面是一个button(按钮)的触发事件,按钮按下检测list control(列表)控件是否有选中的行,把选中的删除。(m_list 是list control 的变量名)
全栈程序员站长
2022/07/11
3.1K0
html复选框选中与未选中触发事件的方法
今天,当制作一个不需要from表单的复选框来提交数据的小函数时,需要在复选框被选中或未选中的情况下修改一些后台数据。我想到了用js代码来监控复选框的状态,并将实时数据发送到后台。关于js代码如何监控checkbox的状态,可以参考下面的例子。
Power
2023/05/25
5.2K0
html复选框选中与未选中触发事件的方法
React技巧之检查复选框是否选中
原文链接:https://bobbyhadz.com/blog/react-check-if-checkbox-is-checked[1]
chuckQu
2022/08/19
1.5K0
React技巧之检查复选框是否选中
单选按钮的取消与选中 原
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
3.7K0
在DataGrid中选择,确认,删除多行复选框列表
在DataGrid中选择,确认,删除多行复选框列表 Selecting, Confirming & Deleting Multiple Checkbox Items In A DataGrid (i.e. HotMail & Yahoo) Introduction Although I don't have either a Hotmail or Yahoo email account, I do have friends that do, and I have o
阿新
2018/04/13
1.7K0
IOS UITableViewCell 选中 选择
1 import UIKit 2 3 class ViewController:UIViewController, UITableViewDataSource, UITableViewDelegate{ 4 5 let diablo3Level = [“普通模式”, “困难模式”, “高手模式”, “大师模式”, “痛苦模式”] 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional
用户5760343
2019/07/08
1.1K0
IOS UITableViewCell 选中 选择
Vue 复选框 checkbox 全选与取消全选
按照jQuery的思想来做的话,要选中全选checkbox和所有的checkbox项,分别注册选中事件,判断选中状态来给相关的checkbox设置对应的状态,这就涉及到很多的dom操作。 下面就看一下vue数据驱动dom的思想来实现这一功能。
sunonzj
2022/06/21
2.7K0
Vue 复选框 checkbox 全选与取消全选
jquery循环获取所有复选框,包括选中的,未选中的「建议收藏」
此处小编的是freemarker代码,不过html代码一样的,有了复选框后,要保证每个复选框的name是一致的。这样下面才能遍历
全栈程序员站长
2022/08/05
3.1K0
使用 jQuery 统计用户选中的复选框的个数
微信公众号平台每个用户最多可以设置三个标签,所以在管理员给用户设置标签的时候需要统计用户的标签,下面就是使用使用 jQuery 统计用户选中的复选框的个数的方法:
Denis
2023/04/15
1.5K0
input checkbox复选框点击获取当前选中状态jquery
function checkAll(id) { //用is判断 // let checkStatus=$(id).is(':checked'); // console.log(checkStatus) //用prop方法(用attr获取不到) let checkStatus=$(id).prop("checked"); console.log(checkStatus) } html: <input type="checkbox" value="" id=
蓓蕾心晴
2018/07/06
2.5K0
Android ListView取消选中框和分割线
楼主在开发过程中有一个需求是一个列表(ListView)在显示和选中的时候都没有选中框和分割线,经过查找只需设置ListView的listSelector和divider属性即可,详细布局中的设置如下所示:
程序员飞飞
2020/02/27
1.1K0
winform 取消datagridview第一行选中状态
http://www.cnblogs.com/freeliver54/archive/2009/02/16/1391325.html
跟着阿笨一起玩NET
2018/09/20
2.9K0
点击加载更多

相似问题

选中或取消选中复选框

25

选中或取消选中复选框- ReactJS

12

选中或取消选中android复选框

10

角度复选框选中或取消选中

13

取消选中“选择所有”复选框

410
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档