亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

小程序?qū)崿F(xiàn)單選多選功能

 更新時(shí)間:2018年11月04日 14:30:06   作者:唐宋元明清.  
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)單選多選功能,可自定義樣式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

小程序的單選組件radio和多選組件checkbox的樣式只提供更改顏色,這對(duì)實(shí)際項(xiàng)目中的需求顯然是不夠的,所以自己模擬實(shí)現(xiàn)一個(gè)。

踩坑點(diǎn):小程序不支持操作dom

1、模擬實(shí)現(xiàn)多選框:

實(shí)現(xiàn)思路:思路非常簡(jiǎn)單,給每個(gè)選項(xiàng)綁定checked屬性,類型為布爾值,點(diǎn)擊取反即可

<!--wxml-->
<view class='wrap'>
 <view class='checkbox-con'>
 <checkbox-group bindchange="checkboxChange">
  <label class="{{item.checked?'checkbox checked':'checkbox'}}" wx:for="{{checkboxArr}}" bindtap='checkbox' data-index="{{index}}" wx:key="item.name">
  <checkbox value="{{item.name}}" checked="{{item.checked}}"/>{{item.name}}
  </label>
 </checkbox-group>
  <button type='primary' bindtap='confirm'>提交</button>
 </view>
</view>
/* wxss */
.wrap{
 width: 550rpx;
 margin: 50rpx auto
}
 
.checkbox-con{
 margin-top: 40rpx;
 text-align: center
}
.checkbox{
 width: 260rpx;
 height: 72rpx;
 line-height: 72rpx;
 font-size: 28rpx;
 color: #888888;
 border: 1rpx solid #CECECE;
 border-radius: 5rpx;
 display: inline-block;
 margin: 0 10rpx 20rpx 0;
 position: relative
}
.checked{
 color: #1A92EC;
 background: rgba(49,165,253,0.08);
 border: 1rpx solid #31A5FD;
}
.checkbox checkbox{
 display: none
}
.checked-img{
 width: 28rpx;
 height: 28rpx;
 position: absolute;
 top: 0;
 right: 0
}

js: 

 Page({
 data: {
 checkboxArr: [{
  name: '選項(xiàng)A',
  checked: false
 }, {
  name: '選項(xiàng)B',
  checked: false
 }, {
  name: '選項(xiàng)C',
  checked: false
 }, {
  name: '選項(xiàng)D',
  checked: false
 }, {
  name: '選項(xiàng)E',
  checked: false
 }, {
  name: '選項(xiàng)F',
  checked: false
 }],
 },
 checkbox: function (e) {
 var index = e.currentTarget.dataset.index;//獲取當(dāng)前點(diǎn)擊的下標(biāo)
 var checkboxArr = this.data.checkboxArr;//選項(xiàng)集合
 checkboxArr[index].checked = !checkboxArr[index].checked;//改變當(dāng)前選中的checked值
 this.setData({
  checkboxArr: checkboxArr
 });
 },
 checkboxChange: function (e) {
 var checkValue = e.detail.value;
 this.setData({
  checkValue: checkValue
 });
 },
 confirm: function() {// 提交
 console.log(this.data.checkValue)//所有選中的項(xiàng)的value
 },
})

2、模擬實(shí)現(xiàn)單選框

思路:這個(gè)和多選差不多,區(qū)別就是需要在點(diǎn)擊時(shí)清空其他項(xiàng)的選中狀態(tài),然后再把當(dāng)前項(xiàng)設(shè)置為選中狀態(tài)

代碼也差不多

wxml的話就把check-group標(biāo)簽改為radio-group; js那邊就在點(diǎn)擊時(shí)多加個(gè)判斷

<!--wxml-->
<view class='wrap'>
 <view class='checkbox-con'>
 <radio-group bindchange="radioChange">
  <label class="{{item.checked?'checkbox checked':'checkbox'}}" wx:for="{{checkboxArr}}" bindtap='radio' data-index="{{index}}" wx:key="item.name">
  <checkbox value="{{item.name}}" checked="{{item.checked}}"/>{{item.name}}
  </label>
 </radio-group>
  <button type='primary' bindtap='confirm'>提交</button>
 </view>
</view>

 Page({
 data: {
 checkboxArr: [{
  name: '選項(xiàng)A',
  checked: false
 }, {
  name: '選項(xiàng)B',
  checked: false
 }, {
  name: '選項(xiàng)C',
  checked: false
 }, {
  name: '選項(xiàng)D',
  checked: false
 }, {
  name: '選項(xiàng)E',
  checked: false
 }, {
  name: '選項(xiàng)F',
  checked: false
 }],
 },
 radio: function (e) {
 var index = e.currentTarget.dataset.index;//獲取當(dāng)前點(diǎn)擊的下標(biāo)
 var checkboxArr = this.data.checkboxArr;//選項(xiàng)集合
 if (checkboxArr[index].checked) return;//如果點(diǎn)擊的當(dāng)前已選中則返回
 checkboxArr.forEach(item => {
  item.checked = false
 })
 checkboxArr[index].checked = true;//改變當(dāng)前選中的checked值
 this.setData({
  checkboxArr: checkboxArr
 });
 },
 radioChange: function (e) {
 var checkValue = e.detail.value;
 this.setData({
  checkValue: checkValue
 });
 },
 confirm: function() {// 提交
 console.log(this.data.checkValue)//所有選中的項(xiàng)的value
 },
})

最后上個(gè)效果截圖


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論