国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 小程序 > 正文

小程序實現單選多選功能

2020-03-21 16:07:44
字體:
來源:轉載
供稿:網友

小程序的單選組件radio和多選組件checkbox的樣式只提供更改顏色,這對實際項目中的需求顯然是不夠的,所以自己模擬實現一個。

踩坑點:小程序不支持操作dom

1、模擬實現多選框:

實現思路:思路非常簡單,給每個選項綁定checked屬性,類型為布爾值,點擊取反即可

<!--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: '選項A',  checked: false }, {  name: '選項B',  checked: false }, {  name: '選項C',  checked: false }, {  name: '選項D',  checked: false }, {  name: '選項E',  checked: false }, {  name: '選項F',  checked: false }], }, checkbox: function (e) { var index = e.currentTarget.dataset.index;//獲取當前點擊的下標 var checkboxArr = this.data.checkboxArr;//選項集合 checkboxArr[index].checked = !checkboxArr[index].checked;//改變當前選中的checked值 this.setData({  checkboxArr: checkboxArr }); }, checkboxChange: function (e) { var checkValue = e.detail.value; this.setData({  checkValue: checkValue }); }, confirm: function() {// 提交 console.log(this.data.checkValue)//所有選中的項的value },})

2、模擬實現單選框

思路:這個和多選差不多,區別就是需要在點擊時清空其他項的選中狀態,然后再把當前項設置為選中狀態

代碼也差不多

wxml的話就把check-group標簽改為radio-group; js那邊就在點擊時多加個判斷

<!--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: '選項A',  checked: false }, {  name: '選項B',  checked: false }, {  name: '選項C',  checked: false }, {  name: '選項D',  checked: false }, {  name: '選項E',  checked: false }, {  name: '選項F',  checked: false }], }, radio: function (e) { var index = e.currentTarget.dataset.index;//獲取當前點擊的下標 var checkboxArr = this.data.checkboxArr;//選項集合 if (checkboxArr[index].checked) return;//如果點擊的當前已選中則返回 checkboxArr.forEach(item => {  item.checked = false }) checkboxArr[index].checked = true;//改變當前選中的checked值 this.setData({  checkboxArr: checkboxArr }); }, radioChange: function (e) { var checkValue = e.detail.value; this.setData({  checkValue: checkValue }); }, confirm: function() {// 提交 console.log(this.data.checkValue)//所有選中的項的value },})

最后上個效果截圖

小程序,單選,多選

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 营山县| 乌拉特前旗| 龙口市| 扎囊县| 根河市| 高要市| 资溪县| 花莲县| 临漳县| 乾安县| 蕉岭县| 高安市| 教育| 郯城县| 海兴县| 资溪县| 扎兰屯市| 友谊县| 大连市| 阿图什市| 阿荣旗| 连州市| 阳山县| 浪卡子县| 临沂市| 贺州市| 武城县| 崇左市| 天峨县| 治县。| 盐边县| 江油市| 阿克陶县| 普格县| 东光县| 六枝特区| 胶州市| 长武县| 锡林浩特市| 新建县| 钦州市|