微信小程序学习 radio如何取消选择,多个radio选择其中一个

微信小程序学习 radio如何取消选择,多个radio选择其中一个

微信小程序入门学习阶段,在使用radio的时候遇到挺多困难,所以想记录下,方便以后复习。

radio怎么取消选择

先模仿官方文档,标签radio-group

 <radio-group bindchange="check" class="check">
    <radio value="{{288}}"  checked="{{check}}"></radio>
  </radio-group>
check(e){
  this.setData({
    check:!this.data.check
  });
},

但是这样是实现不了的,因为bindchange只能触发一次

  1. 方案1 把标签改为view,js内容不变
    <view bindtap="check" class="check">
    <radio value="{{288}}"  checked="{{check}}"></radio>
    </view>
  1. 方案2 把标签改为label,js内容不变
    <label catchtap="check" class="check">
    <radio value="{{288}}"  checked="{{check}}"></radio>
    </label>

多个radio,想实现选中一个,其他的选中自动消失

如代码所示,我创建了三个radio标签

    <radio-group bindchange="check0" class="check">
    	<radio value="{{288}}"  checked="{{checked[0]}}"></radio>
    </radio-group>
    
    <radio-group bindchange="check1" class="check">
   		<radio value="{{388}}" checked="{{checked[1]}}"></radio>
    </radio-group>
    
    <radio-group bindchange="check2" class="check">
    	<radio value="{{588}}" checked="{{checked[2]}}" ></radio>
    </radio-group>

然后分别对应三个函数就可以了

把当前触发的设置为true,其他都是false

//初始化全部为false
data: {
    checked:[false,false,false],
  },



check0(e){
  let newChecked=this.data.checked
  newChecked[0]=true
  newChecked[1]=false
  newChecked[2]=false
  this.setData({
    price:Number(e.detail.value),
    checked:newChecked
  });
},
check1(e){
  let newChecked=this.data.checked
  newChecked[0]=false
  newChecked[1]=true
  newChecked[2]=false
  this.setData({
    price:Number(e.detail.value),
    checked:newChecked
  });
},
check2(e){
  let newChecked=this.data.checked
  newChecked[0]=false
  newChecked[1]=false
  newChecked[2]=true
  this.setData({
    price:Number(e.detail.value),
    checked:newChecked
  });
},

这样就完成了,但是可以让代码更精简一下,不需要写三个函数,一个函数就可以了,通过我传进来的value值去控制checked

check(e){
  let newChecked=this.data.checked
  let value=e.detail.value
  if(value==288){
    newChecked[0]=true
    newChecked[1]=false
    newChecked[2]=false
  }
  else if(value==388){
    newChecked[0]=false
    newChecked[1]=true
    newChecked[2]=false
  }
  else{
    newChecked[0]=false
    newChecked[1]=false
    newChecked[2]=true
  }
  this.setData({
    price:Number(e.detail.value),
    checked:newChecked
  });
},

收获 || 注意点

  1. 在setData里面是不能设置数组里的某个元素的,所以我需要在外面自己定义一个数组。最后修改的是整个数组

  2. radio标签里的checked属性

    <radio value="{{288}}" checked="false"></radio> 这样是选中的状态

    <radio value="{{288}}" checked=""></radio> 这样没有选中的状态

    <radio value="{{288}}" checked="{{false}}"></radio> 这样是没有选中的状态

<radio value="{{288}}" checked="{{check}}"></radio>

注意此时data里的check必须是true或false,不能是字符串的“true”或“false”

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值