radio點擊當前選項,取消選擇,在網上嘗試找了很多方法都不生效,通過給radio綁定一個點擊事件(
bindtap)來實現這一功能,直接看代碼:
index.wxml:
<view class="page"> <view class="page__hd"> <text class="page__title">radio</text> <text class="page__desc">單選框</text> </view> <view class="page__bd"> <view class="section section_gap"> <radio-group class="radio-group" bindchange="radioChange"> <radio class="radio" bindtap = "bindtap1" wx:for-items="{{items}}" wx:key="name" value="{{item.name}}" checked = "{{item.checked}}"> <text>{{item.value}}</text> </radio> </radio-group> </view> </view> </view>
index.wss:
.radio-group { border-bottom: 1px solid #ddd; } .radio { display: block; border-top: 1px solid #ddd; padding: 5px; }
index.js:
Page({ data: { items: [ { name: 'USA', value: '美國', checked:false}, { name: 'CHN', value: '美國', checked: true }, { name: 'BRA', value: '巴西', checked: false}, { name: 'JPN', value: '日本', checked: false}, { name: 'ENG', value: '英國', checked: false}, { name: 'FRA', value: '法國', checked: false}, ], aa:'CHN' }, bindtap1:function(e){ var items = this.data.items; for (var i = 0; i < items.length; i++){ if (items[i].name == this.data.aa){ for (var j = 0; j < items.length; j++) { // console.log("items[j].checked = ", items[j].checked); if (items[j].checked && j != i) { items[j].checked = false; } } items[i].checked = !(items[i].checked); console.log("-----:" ,items); // this.setData(this.data.items[i]); } } this.setData({ items: items }); }, radioChange: function (e) { // for(var i = 0;i<this.data.items.length;i++){ // if (this.data.items[i].checked){ // // console.log('radio發生change事件,攜帶value值為:', this.data.items[i].name) // } // } this.data.aa = e.detail.value; console.log(this.data.aa); } })
通過這樣就可以實現radio的再次點擊取消掉選擇