日常小记:以checkbox实现类似Radiobutton的互斥选项

先粘代码:

function checkOne(obj){
        if(obj.checked == true){  //点击之前是false
            var objs = document.getElementsByName(obj.name);
            for(var i=0;i<objs.length;i++){
                objs[i].checked = false;
            }
            obj.checked = true;
        }else{

            obj.checked = false;
        } 
    }

给元素添加单击事件,有一点需要注意,在单击之后进入该方法时,元素的checked已经改变过了,就是进入方法时如果obj.checked == true则元素点击前是未选中的状态。

就这么多,回家睡觉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lvgl checkbox 实现互斥,可以通过给所有的 checkbox 绑定同一个回调函数,在回调函数中,对所有的 checkbox 进行遍历,判断哪些 checkbox 被选中,如果有多个被选中,则取消除最后选择的那一个以外的所有选择。同时,也可以在回调函数中对被选中的 checkbox 进行一些后续操作。下面是一个示例代码: ```c /* 回调函数 */ static void checkbox_group_cb(lv_obj_t *checkbox, lv_event_t event) { if(event == LV_EVENT_VALUE_CHANGED) { lv_obj_t *checkbox_group = lv_obj_get_parent(lv_obj_get_parent(checkbox)); /* 遍历所有 checkbox 并取消大部分的选中 */ lv_obj_t *child; LV_LL_READ(lv_obj_get_child_ll(checkbox_group), child) { if(lv_obj_is_checkbox(child)) { if(child != checkbox && lv_checkbox_is_checked(child)) { lv_checkbox_set_checked(child, false); } } } /* 后续操作 */ if(lv_checkbox_is_checked(checkbox)) { printf("Checkbox %s is checked\n", lv_checkbox_get_text(checkbox)); } else { printf("Checkbox %s is unchecked\n", lv_checkbox_get_text(checkbox)); } } } /* 创建 checkbox */ lv_obj_t *checkbox_group = lv_cont_create(lv_scr_act(), NULL); lv_cont_set_fit2(checkbox_group, LV_FIT_PARENT, LV_FIT_TIGHT); lv_cont_set_style(checkbox_group, LV_CONT_STYLE_MAIN, &lv_style_transp); lv_obj_t *checkbox1 = lv_checkbox_create(checkbox_group, NULL); lv_checkbox_set_text(checkbox1, "Checkbox 1"); lv_obj_set_event_cb(checkbox1, checkbox_group_cb); lv_obj_t *checkbox2 = lv_checkbox_create(checkbox_group, checkbox1); lv_checkbox_set_text(checkbox2, "Checkbox 2"); lv_obj_set_event_cb(checkbox2, checkbox_group_cb); lv_obj_t *checkbox3 = lv_checkbox_create(checkbox_group, checkbox2); lv_checkbox_set_text(checkbox3, "Checkbox 3"); lv_obj_set_event_cb(checkbox3, checkbox_group_cb); ``` 这样,就可以实现多个 checkbox 之间的互斥了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值