【uniapp】单选框、复选框点击整行选中效果实现

单选框

<view class="list-item" v-for="(item, index) in cardList" :key="index" @click="radioChange(item)">
  <image class="list-item-icon" :src="item.bankUrl" mode=""></image>
  <view class="list-item-name">{{ item.bankName }}</view>
  <radio :value="item.cardNo" :checked="item.cardNo === cardNo" color="#F4858A" borderColor="#F4858A" style="transform: scale(0.75)" />
</view>
// 切换单选框
radioChange(item) {
  this.cardNo = item.cardNo
}
/deep/.uni-radio-input {
	margin-right: 0;
}

复选框

  • 若在u-checkbox-group上绑定change事件来获取勾选的数组,则只能点击复选框拿到选中的数据,点击范围太小,不符合需求
  • 要求点击一整行的任意位置都能选中,则只能绑定click时间来获取,但是需要虽然在行内绑定了click事件,且checkbox被包裹在里面,但是点击checkbox时并不会触发click事件,只会触发自身的change事件,所以需要在change事件里面再手动获取一下勾选的数据
<scroll-view class="list-container" v-if="attentionList.length" :scroll-y="true" @scrolltolower="loadNextPage">
  <u-checkbox-group placement="column">
    <block v-for="(item, index) in attentionList" :key="index">
      <view class="list-item" @click="checkboxGroupChange(item)">
      	<!-- uniapp的checkbox组件不能实现圆形的复选框样式,所以这里用的是uview的u-checkbox -->
        <u-checkbox class="list-item-checkbox" :checked="item.isChecked" :value="item.userinfo.numberId" shape="circle" size="32" iconSize="20" activeColor="#F4858A" @change="onCheck(index)"></u-checkbox>
        <zero-lazy-load class="list-item-avatar" :borderRadius="70" :image="item.userinfo.headUrl" :height="70" imgMode="aspectFill"></zero-lazy-load>
        <view class="list-item-name">{{ item.userinfo.nickName || '' }}</view>
      </view>
    </block>
  </u-checkbox-group>
  <view class="tips-box">
    <u-loadmore :status="loadStatus" :fontSize="20" nomore-text="没有更多了~" />
  </view>
</scroll-view>
// 切换列表单个复选框状态
onCheck(index) {
   this.attentionList[index].isChecked = !this.attentionList[index].isChecked
   // 获取选中数组
   this.checkedList = this.attentionList.filter(item => !!item.isChecked)
 },
 // 获取选中数组
 checkboxGroupChange(item) {
   this.attentionList.map(v => {
     if (v.userinfo.numberId == item.userinfo.numberId) {
       v.isChecked = !v.isChecked
     }
   })
   this.checkedList = this.attentionList.filter(item => !!item.isChecked)
 }
/deep/.u-checkbox__icon-wrap {
  margin: 0;
}
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
uni-app中,单选框复选框可以使用checkbox组件来实现。在基础用法下,uni-app使用内置的默认参数来显示checkbox的样式和状态。然而,这种用法不能满足实际业务场景的需求,因为复选框通常以组的形式出现,即使组中只有一个选项。为了引入组的概念,uni-app还提供了一个checkbox-group组件来使用。基本用法是将checkbox组件放置在checkbox-group组件内,如下所示: <checkbox-group> <checkbox /> 篮球 <checkbox /> 足球 <checkbox /> 网球 </checkbox-group> 可以通过checkbox组件的disabled属性来控制复选框是否可选中或取消选中。当复选框处于disabled状态时,复选框的样式将变灰,用户无法进行选中或取消选中操作。disabled属性的类型为Boolean,默认值为false。 为了修改checkbox的样式,可以通过设置相应的CSS样式来实现。比如,可以使用uni-checkbox类来修改复选框的外观。uni-checkbox-input类可以用来设置复选框选中状态的样式。在样式中,可以设置border-radius属性来改变复选框的圆角,color属性来改变复选框的颜色,border属性来设置选中状态的边框,background属性来设置选中状态的背景色,以及其他一些样式属性来调整复选框的大小和位置。 综上所述,uni-app提供了方便的单选框复选框组件,可以通过设置属性和样式来满足不同的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Komorebi゛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值