【翻译】checkbox的第三种状态

checkbox只有两种值:选中(checked)或未选中(unchecked)。它可以有任何值,但是表单提交时checkbox的值只能是checked或unchecked。它的默认值是unchecked,你可以在HTML中这样控制它:

<!-- Default to unchecked -->
<input type="checkbox">

<!-- Default to checked, XHTML -->
<input type="checkbox" checked="checked" />

<!-- Default to checked, HTML5 -->
<input type="checkbox" checked>

 

视觉上,checkbox有三种状态:checked、unchecked、indeterminate(不确定的)。看起来就像这样子:

对于indeterminate状态的checkbox需要注意的是:你无法在HTML中设置checkbox的状态为indeterminate。因为HTML中没有indeterminate这个属性,你可以通过Javascript脚本来设置它

var checkbox = document.getElementById("some-checkbox");
checkbox.indeterminate = true;

 

或者通过jQuery来设置

$("#some-checkbox").prop("indeterminate", true); // prop is jQuery 1.6+

 

checkbox的indeterminate状态仅仅是视觉上的,它的值仍然只有checked或unchecked,这意味着indeterminate状态的checkbox的真正价值只是在用户界面上看起来更友好!

indeterminate状态的checkbox在不同浏览器里外观不同,下图是它在Mac下Opera 11.50的外观:

案例

我写这篇文章的主要原因是我有一个有用的案例:在嵌套的checkbox中,每一个checkbox都可能有很多个子checkbox,如果所有子checkbox都选中了,它也应该选中;如果没有一个子checkbox选中,它也不选中;如果有一部分子checkbox选中,它应该是indeterminate状态(在这种情况下,象征着部分子元素选中).

完整demo(原作者的demo有点问题,这里我做了个简化

 

<!DOCTYPE html>
<html>

<head>
<meta charset='UTF-8'>
<meta content="checkbox的第三种状态 by 王美建 from:http://www.cnblogs.com/wangmeijian/">

<title>checkbox的第三种状态</title>

<link rel='stylesheet' href='css/style.css'>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(function() {
    $('input[type="checkbox"]').click(function(e) {
        var obj = $(this);
        setState(obj);

        function setState(oInput){
            var state = oInput.prop("checked"),
                This = oInput,
                allLen = This.closest("ul").children("li").length,
                checkedLen = This.closest("ul").children("li").children("input:checked").length;

                console.log( "state = "+state )
                console.log( "siblings = "+allLen )
                console.log( "checkedLen = "+checkedLen )
            if( allLen === checkedLen && checkedLen > 0 ){
                oInput.closest("ul").closest("li").children("input").prop({
                    checked: true,
                    indeterminate: false
                })
            }else if( allLen !== checkedLen && checkedLen > 0){
                oInput.closest("ul").closest("li").children("input").prop({
                    checked: false,
                    indeterminate: true
                })
            }else if(checkedLen == 0){
                oInput.closest("ul").closest("li").children("input").prop({
                    checked: false,
                    indeterminate: false
                })
            }
        }


    });
});
</script>
</head>

<body>

    <div id="page-wrap">    
       <h1>checkbox的第三种状态</h1>        
       <ul>
        <li>
            <input type="checkbox" name="tall" id="tall">
            <label for="tall">Tall Things</label>
            
            <ul>
                 <li>
                     <input type="checkbox" name="tall-1" id="tall-1">
                     <label for="tall-1">Buildings</label>
                 </li>
                 <li>
                     <input type="checkbox" name="tall-2" id="tall-2">
                     <label for="tall-2">Giants</label>
                 </li>
                 <li>
                     <input type="checkbox" name="tall-3" id="tall-3">
                     <label for="tall-3">Two sandwiches</label>
                 </li>
            </ul>
        </li>
        <li>
            <input type="checkbox" name="short" id="short">
            <label for="short">Short Things</label>
            
            <ul>
                 <li>
                     <input type="checkbox" name="short-1" id="short-1">
                     <label for="short-1">Smurfs</label>
                 </li>
                 <li>
                     <input type="checkbox" name="short-2" id="short-2">
                     <label for="short-2">Mushrooms</label>
                 </li>
                 <li>
                     <input type="checkbox" name="short-3" id="short-3">
                     <label for="short-3">One Sandwich</label>
                 </li>
            </ul>
        </li>
    </ul>
    
    </div>
    
</body>

</html>

 

本文翻由博客园王美建译自: https://css-tricks.com/indeterminate-checkboxes/,水平有限,如果翻译不当的地方欢迎园友批评指正!

转载于:https://www.cnblogs.com/wangmeijian/p/4614959.html

andrew1989121
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
checkbox设置三种状态 qt_【翻译checkbox第三种状态
weixin_39948442的博客
01-14 380
checkbox只有两种值:选中(checked)或未选中(unchecked)。它可以有任何值,但是表单提交时checkbox的值只能是checked或unchecked。它的默认值是unchecked,你可以在HTML中这样控制它:视觉上,checkbox有三种状态checked、unchecked、indeterminate(不确定的)。看起来就像这样子:对于indeterminate状态...
Android Studio自定义CheckBox样式
li1996heng的博客
11-27 6582
在Android Studio中自定义CheckBox样式,功能实现如下: 第一步:首先你需要两张图片,作为CheckBox在选中和不被选中状态时的样式.示例图片已共享,至于图片放在哪个文件夹里,对于Android Studio你有两个选择,一是放在drawable,一是放在mipmap-hdpi.关于这两个文件夹的区别,这里引用谷歌官方的说法:"mipmap-hdpi  和 drawable
checkbox的三种状态
放松心身的专栏
03-27 8873
 下图是CheckBox可以表现的三种状态:     checkbox的indeterminate属性是个独立的属性,使checkbox控件置灰indeterminate = false(default): 不选中,置灰indeterminate = true : 选中,置灰示例:html>head>head>body>input name="c0" id="c0" typ
如何实现checkbox第三种状态?
weixin_40705103的博客
09-28 400
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...
三态CheckBox例子
wyf
02-23 321
首先三态节点树必须是带有CheckBox的树,这里简单说明一下所做的三态树。所谓三态:选中状态,半选中状态,未选中状态。选中状态:节点的CheckBox打勾;半选中状态:节点的CheckBox打勾,但为灰色;未选中状态CheckBox不打勾。        其次,子节点全选中,父节点选中;子节点全不选中,父节点不选中;子节点选中但未全部选中,父节点半选中;子节点半选中,父节点半选中;父节...
checkGroup 有全选框的时候 的indeterminate的作用
寬真
12-13 1083
checkGroup 有全选框的时候,其子项的选择不会使全选中的状态发生改变,除非是全部选中,通过indeterminate进行的控制。 举例如下: onChange = (checkedList: any) => { const { onChange } = this.props as any; if (!('value' in this.props)) ...
(翻译)第十二回 JavaFX2.0 复选框CheckBox
圈儿的专栏
11-02 1593
原文地址http://download.oracle.com/javafx/2.0/ui_controls/checkbox.htm   CheckBox类让你可以在应用中创建复选框。尽管复选框看起来很想单选框,但是它们并不能被放置进一个开关组中来实现很多选项的选择。你可以复习一下前面关于Radio Button 和Toggle Button相关的内容。 Figure 6-1
ListFragment+CheckedTextView和ListFragment+CheckBox两种多选效果
aa841538513的博客
09-22 1737
ListFragment+CheckedTextView和ListFragment+CheckBox两种多选效果 本来不想写这篇博客,原因是不想被几个月以后的自己鄙视,其实很容易的,可是又有几个细节要注意,怕自己忘记,还是记录一下吧。 这里注意: 1,getListView()放在onActivityCreated()中获取 2,就是CheckedTextView的布局文件(我还是把整个xml贴上了)
Axure RP Pro 相关问题 checkbox复选框部件的OnClick事件中复选框的状态已发生了改变
yffkjhg的博客
11-07 788
Axure RP Pro 相关问题 checkbox复选框部件的OnClick事件中复选框的状态已发生了改变
Axure RP Pro - 相关问题 - checkbox复选框部件的OnClick事件中复选框的状态已发生了改变
yffkjhg的博客
11-09 365
Axure RP Pro - 相关问题 - checkbox复选框部件的OnClick事件中复选框的状态已发生了改变
关于CheckBox勾选隐藏和显示,以及导出勾选的复选框的excel文档
讲哩滴的博客
07-09 8849
前台显示页面: 然后点击展开按钮: 勾选展开或者收起里的复选框,或者勾选序号里的复选框,点击翻译后还会记住之前的勾选,点击excel导出,可以导出你任意勾选的复选框的数据,下面是对应的前台jsp,后台java处理代码。 前台jsp: &lt;%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%&gt...
Android学习分享-常见控件05-RadioButton和CheckBox详解
liu_hui的博客
12-05 812
Android RadioButton和CheckBox的用法
复选框checkbox的三种状态
The_Best_Hacker的博客
02-28 8413
checked的选中状态 不设置checked是默认不被选中的, 一旦设置checked="false"或者checked = true或者不设置任何值,都会被解释为选中。 &lt;input type="checkbox" name="test" id="test1"/&gt; //未被选中 &lt;input type="checkbox" name="test
前端 js 处理一个数组 展示成层级下拉样式
lzfengquan的博客
10-17 335
前端开发中,不管是什么时候都会遇到select 下拉框的使用,一般情况下,数据处理后端都会处理好。前端一般使用相应技术栈所推荐的公共组件就可以了。前端处理的前提是要确定那个是父级元素,那个是子级元素,这样才能更好的处理数据。这个时候前端要写个方法去处理这个数组了。这个数组后端是会给的。
JavaScript 中的定时器与动画基础
jht_520的博客
10-20 201
例如,可以使用 setInterval 来每隔一定的时间改变一个元素的位置,从而实现移动效果。它接受两个参数,第一个参数是要执行的函数,第二个参数是时间间隔的毫秒数。它也接受两个参数,第一个参数是要执行的函数,第二个参数是延迟的毫秒数。setInterval 和 setTimeout 都是 JavaScript 中的定时器函数,用于在一定的时间间隔后执行函数。上述示例代码会先延迟两秒后开始淡入动画,然后再延迟两秒后开始淡出动画,从而实现一个简单的淡入淡出动画效果。
Axios get请求数组参数移除默认的[]
最新发布
东逝水
10-23 156
选择的状态变了,数据没变呀,遂找后端,经过调查,说是不能参数中不能有[],否则不能正确解析这个参数。过了几天,也就是今天,我突然想把这个记录下来,于是就想把Axios中的逻辑搞清楚,就去翻代码,无意间看到这段代码(toFormData.js),感觉可以把indexes传成null,就试了试,果然成了。现在用的是Axios,我觉得Axios应该会把这个作为选项暴露出来,让使用者可以切换。但是文档中却没有,如果我没找错文档的话,那只能说文档跟代码有脱节,滞后了。
JS-常用功能
qq_40950398的博客
10-18 286
汇总一些常用的js功能
C#checkbox有3种状态怎么获取
07-14
不过,如果你想要实现三种状态(包括未选中、选中和不确定状态),可以通过设置 CheckBox 的属性来实现。 要获取 CheckBox状态,可以使用 Checked 属性来检查它是否被选中。该属性返回一个布尔值,如果 CheckBox...
写文章

热门文章

  • 设置电脑为手机代理 3714
  • 前端加载大图片从模糊到清晰 3323
  • textarea placeholder文字换行 950
  • 5种方式将数字转成千分位 897
  • Android调试移动端webview 724

大家在看

  • YOLO11改进:SPPF系列改进篇 | 大核分离卷积注意力模块( Large Separable Kernel Attention)
  • 轻松学会:如何从Docker镜像中拷贝文件
  • 在jenkins中引用credentials 233
  • Python 模块详解 277
  • 为什么riscv native gcc运行时需要指定sysroot 128

最新文章

  • KMP算法JS实现
  • 技术服务于生活——羽毛球+程序员=?
  • Nodejs监控Apple召回计划&邮件提醒
2019年7篇
2018年5篇
2017年12篇
2016年10篇
2015年19篇
2014年8篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢雕塑创业洛阳南昌玻璃钢雕塑防城港玻璃钢商场美陈怎样做玻璃钢花盆玻璃钢海蛇雕塑随州市玻璃钢雕塑厂家广州小区玻璃钢雕塑生产厂家玻璃钢人物学校抽象雕塑报价商场美陈中国风青岛坚实玻璃钢座椅雕塑丹东玻璃钢花盆花器商场美陈主要哪些材质艺术商场美陈批发价四川开业商场美陈哪里有上海室内商场美陈生产公司贵阳景观玻璃钢雕塑定做价格品质玻璃钢卡通雕塑怎么样蚌埠大型户外玻璃钢雕塑安徽人物玻璃钢雕塑销售厂家江西玻璃钢人物雕塑厂家六安雕塑玻璃钢黄山景区玻璃钢雕塑定制安宁玻璃钢雕塑产品厂家哪里好浙江户内玻璃钢雕塑供应商布朗熊玻璃钢雕塑定制铸铜玻璃钢雕塑厂家玻璃钢雕塑人物玻璃钢雕塑 泡沫雕塑师浙江天桥玻璃钢花盆生产厂家景观玻璃钢卡通雕塑销售电话香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化