微信小程序中快速使用input/radio/checkbox/picker坛吁,輸入框/單選/多選/下拉/,編輯和查看铐尚,快速賦值拨脉。

很多時(shí)候,用到小程序中的選項(xiàng)宣增,如果少還好說(shuō)女坑, 但是如果一個(gè)頁(yè)面有上百個(gè), 而且還有查看歷史统舀,就是打開(kāi)頁(yè)面后,自動(dòng)賦值選中的情況劳景,所有就寫了一個(gè)可以賦值粘貼的快速寫的方法誉简, 直接復(fù)制既可, 而且函數(shù)也就三個(gè)盟广。

剛做完一個(gè)調(diào)查項(xiàng)目闷串,里面幾乎全是問(wèn)題,輸入框筋量,選項(xiàng)烹吵。一個(gè)頁(yè)面有上百個(gè)!桨武!所有未了快速使用復(fù)制粘貼肋拔, 寫了個(gè)公用。
image.png

image.png
image.png

image.png

image.png

page 中數(shù)據(jù) 主要是渲染數(shù)據(jù)選項(xiàng)的名字:fieldsInfo呀酸,以及選中的數(shù)據(jù)放哪里:allData

data: {
    // 圖片鏈接
    img_server_url: app.globalData.img_server_url,
    //自定義頂部
    nvabarData: {
      homeCapsule: false,
      title: '個(gè)人特征',
      fontColor: "white",
      fontSize: '26rpx',
      headerbg: '#04aceb',
      hiddenBlock: false,
      slot: false
    },
    navHeight: app.globalData.navHeight + app.globalData.statusHeight,
    // 選項(xiàng)值
    fieldsInfo: app.globalData.fieldsInfo,// 很多頁(yè)面在用凉蜂,就放app里面了
    // 都是數(shù)組,看看樣子
   /*
     housing_type: [
        '市場(chǎng)商品房',
        '保障性住房',
        '人才安居房',
        '機(jī)關(guān)事業(yè)單位安居房',
        '小產(chǎn)權(quán)房',
        '其他住房'
      ],
      acquire_habitatio_mode: [
        '購(gòu)買',
        '單獨(dú)租賃',
        '合租',
        '單位員工宿舍',
        '其他'
      ],
      income:[
        '請(qǐng)選擇···',
        '≤6',
        '7-15',
        '16-25',
        '26-40',
        '41-60',
        '61-80',
        '81-100',
        '101-120',
        '>120'
      ],
     // 省略了···
*/
    //數(shù)據(jù)值
    allData:{
      "start_time":"",
      "end_time":"",
      "person_number": "",
      "sex": "",
       省略了...
    }

input 因?yàn)檩斎肟蚍浅6啵恳粋€(gè)上面綁定了一個(gè)字段的名字窿吩,方便更改茎杂,省的重復(fù)寫函數(shù) data-field="relation_text" 而且查看的時(shí)候,賦值也方便纫雁。布局樣式自己寫煌往。

    <input class="field" type="text" data-field="relation_text" value="{{allData.relation_text}}" bindinput="inputChange"/>
/** 輸入框 */
  inputChange(e) {
  // 因?yàn)檩斎肟蚍浅6啵恳粋€(gè)上面綁定了一個(gè)值轧邪,方便更改刽脖,省的重復(fù)寫函數(shù)
    var fieldName = e.currentTarget.dataset.field;
    var allData = this.data.allData;
    allData[fieldName] = e.detail.value;
    this.setData({
      allData: allData
    });
  },

radio/checkbox選項(xiàng),選中賦值闲勺,以及查看時(shí)候 根據(jù)一個(gè)數(shù)據(jù)曾棕,自動(dòng)選中對(duì)應(yīng)選項(xiàng)。

  <!-- 多選查看的時(shí)候菜循,設(shè)置選中: filters.setChecked(allData.design_industry,item)   多選的值是一組數(shù)組 -->
  <checkbox-group class="radio-group-wrap" bindchange="radioChange" data-field="design_industry">
      <checkbox class="radio" style="min-width:30%;margin-right:10rpx;" color="#fff" wx:key="*this" wx:for="{{fieldsInfo.design_industry}}" wx:for-item="item" value="{{item}}" checked="{{ filters.setChecked(allData.design_industry,item) }}">
           <text>{{item}}</text>
      </checkbox>
 </checkbox-group>
  <!-- 單選查看的時(shí)候翘地,設(shè)置選中: allData.relation==item  因?yàn)閱芜x值就是一個(gè)字符串,相等既可   -->
<radio-group class="radio-group-wrap" bindchange="radioChange" data-field="relation">
    <radio class="radio" style="width:calc( 100% / 4 );" color="#fff" wx:key="*this" wx:for="{{fieldsInfo.relation}}" wx:for-item="item" value="{{item}}" checked="{{allData.relation==item}}">
        <text>{{item}}</text>
    </radio>
 </radio-group>

單選和多選用的同一個(gè)函數(shù)癌幕, 都是通過(guò)綁定的 field 字段來(lái)更改數(shù)據(jù)值衙耕, 同時(shí)里面還可以做出限制,比如做多幾項(xiàng)勺远,

/* 點(diǎn)擊選項(xiàng) 單選多選公用 */
  radioChange(e) {
    var fieldName = e.currentTarget.dataset.field;
    var allData = this.data.allData;
    var itemData = e.detail.value;
    if (fieldName=="traffic_subsidy"){
      if (itemData.indexOf('不提供交通補(bǔ)貼')!=-1){
        itemData = ['不提供交通補(bǔ)貼']
      }
    }
    var names = ['design_industry', 'driving_aims'];
    // 多選限制
    if (Common.findInArr(fieldName, names)) {
      if (itemData.length > 3) {
        itemData = itemData.splice(0, 3);
        wx.showToast({
          title: '請(qǐng)最多選三項(xiàng)橙喘!',
          icon: 'none',
          duration: 1000,
          mask: true
        });
      }
    }
    allData[fieldName] = itemData;
    this.setData({
      allData: allData
    });
  },

注意:上面用到了 filters.setChecked 過(guò)濾器, 為了設(shè)置查看歷史時(shí)候胶逢,多選自動(dòng)根據(jù)數(shù)據(jù)渲染選中情況厅瞎,寫了一個(gè)函數(shù)


<!-- 引入過(guò)濾器 -->
<wxs module="filters" src="../../utils/filter.wxs"></wxs>
// 過(guò)濾器函數(shù)內(nèi)容
// 設(shè)置復(fù)選框選中
  setChecked: function (selArr,fields) {
    if (selArr == null || selArr == undefined || selArr == '') {
      return false;  
    }
    if (selArr.indexOf(fields) != -1) {
      return true;
    } 
    return false;  
  },

picker 選項(xiàng) 一樣的寫法, 都是給每一個(gè) 選擇器 加一個(gè) 綁定的數(shù)據(jù)名字初坠,方便更改值和簸,和 頁(yè)面一打開(kāi)賦值。

<picker bindchange="pickerChange" data-field="man"  value="{{allData.man}}" range="{{fieldsInfo.num_count}}">
                <view class="picker">
                  {{fieldsInfo.num_count[allData.man]}}
                </view>
              </picker>
/* 彈窗 picker選項(xiàng)變化 事件 */
  pickerChange(e) {
    var fieldName = e.currentTarget.dataset.field;
    var allData = this.data.allData;
    allData[fieldName] = e.detail.value;
    this.setData({
      allData: allData
    });
  },
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碟刺,一起剝皮案震驚了整個(gè)濱河市锁保,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌半沽,老刑警劉巖爽柒,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異者填,居然都是意外死亡浩村,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門占哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)穴亏,“玉大人蜂挪,你說(shuō)我怎么就攤上這事∩せ” “怎么了棠涮?”我有些...
    開(kāi)封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刺覆。 經(jīng)常有香客問(wèn)我严肪,道長(zhǎng),這世上最難降的妖魔是什么谦屑? 我笑而不...
    開(kāi)封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任驳糯,我火速辦了婚禮,結(jié)果婚禮上氢橙,老公的妹妹穿的比我還像新娘酝枢。我一直安慰自己,他們只是感情好悍手,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布帘睦。 她就那樣靜靜地躺著,像睡著了一般坦康。 火紅的嫁衣襯著肌膚如雪竣付。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天滞欠,我揣著相機(jī)與錄音古胆,去河邊找鬼。 笑死筛璧,一個(gè)胖子當(dāng)著我的面吹牛逸绎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播夭谤,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼桶良,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沮翔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤曲秉,失蹤者是張志新(化名)和其女友劉穎采蚀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體承二,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榆鼠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亥鸠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妆够。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡识啦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出神妹,到底是詐尸還是另有隱情颓哮,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布鸵荠,位于F島的核電站冕茅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛹找。R本人自食惡果不足惜姨伤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望庸疾。 院中可真熱鬧乍楚,春花似錦、人聲如沸届慈。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拧篮。三九已至词渤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間串绩,已是汗流浹背缺虐。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留礁凡,地道東北人高氮。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像顷牌,于是被迫代替她去往敵國(guó)和親剪芍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,105評(píng)論 1 32
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)窟蓝,會(huì)觸發(fā)此異常罪裹。 O...
    我想起個(gè)好名字閱讀 5,321評(píng)論 0 9
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,746評(píng)論 0 10
  • 一状共、Retrofit2 簡(jiǎn)介 Retrofit是一個(gè)遵循RESTful設(shè)計(jì)的進(jìn)行HTTP網(wǎng)絡(luò)請(qǐng)求框架,底層網(wǎng)絡(luò)請(qǐng)求...
    01_小小魚_01閱讀 1,279評(píng)論 0 0
  • 今天中午谁帕。烈陽(yáng)高照峡继,萬(wàn)里無(wú)云。 我準(zhǔn)備和附中管弦樂(lè)隊(duì)前往錄音棚錄像匈挖,我整理好了服裝站在一旁等著上大...
    快到哥的碗里來(lái)閱讀 280評(píng)論 0 0