微信小程序,實現input 鍵盤“下一項”功能

聲明在前,我是做iOS開發的,最近在研究小程序,對HTML了解的也是相當的少,所以你懂的,做小程序反應就稍慢點,不過我在學啊O(∩_∩)O哈哈~。根據官方的小程序簡易教程按著流程一步一步的做還是很好入門的,大家有興趣的可以試一下,保證不是騙人的。
在使用的過程中,我遇到了一個問題:input標簽可以設置鍵盤的confirm鍵的名字叫“下一項”也就是“next”,但是卻沒有實現功能。其實在iOS上怎么實現我也不知道,我只知道有一個三方IQKeyboardManager相當好用。
廢話不多說,直接匯報結果:

結果圖

界面如上圖,要實現輸入一行,點擊下一項繼續輸入,直到最后一項,鍵盤收起。
.wxml代碼

<view class="container">

  <template name="cellViewTemplat">
    <view class="cellView">
      <view class="cellNameView">{{item.name}}</view>
      <input class="cellInputView" focus="{{item.focus}}" id="{{item.inputId}}" confirm-type='{{item.inputId===1008?"done":"next"}}'  bindconfirm="confirmBtnClicked" bindfocus="inputFocus" bindblur="inputblur" />
    </view>
  </template>

  <view class="infoView">
    <block wx:for="{{list1}}" for-key="key">
      <template is="cellViewTemplat" data="{{item}}"></template>
    </block>

  </view>
  <view class="infoView">
    <block wx:for="{{list2}}" for-key="key">
      <template is="cellViewTemplat" data="{{item}}"></template>
    </block>
  </view>
  <button class="confirmButton">確認保存</button>
</view>

.wxss代碼

.container {
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.infoView {
  padding: 10rpx;
  margin: 20rpx;
  width: 90%;
  
  border: 1rpx lightgray solid;
  border-radius: 8rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.cellView {
  margin: 10rpx;
  padding: 10rpx;
  width: 100%;
  border-bottom: 1rpx lightgray dashed;
  /*display: flex;
  flex-direction: row;
  align-items: center;*/
  
}

.cellNameView {
  float: left;
  /*width: 30%;*/
  /*text-align: center;*/
  /*background-color: greenyellow;*/
}

.cellInputView {
  float: right;
  /*width: 70%;*/
  text-align: right;
  /*background-color: red;*/
}
.confirmButton {
  color: white;
  background-color: limegreen;
}

.js代碼

Page({

  /**
   * 頁面的初始數據
   */
  data: {
    list1: [
      {
        name: '真實姓名',
        focus: false,
        content:"",
        inputId: 1000
      },
      {
        name: '職業',
        focus: false,
        content: "",
        inputId: 1001
      },
      {
        name: '手機',
        focus: false,
        content: "",
        inputId: 1002
      },
      {
        name: '郵箱',
        focus: false,
        content: "",
        inputId: 1003
      }
    ],
    list2: [
      {
        name: '愛車品牌',
        focus: false,
        content: "",
        inputId: 1004
      },
      {
        name: '愛車型號',
        focus: false,
        content: "",
        inputId: 1005
      },
      {
        name: '發動機排量',
        focus: false,
        content: "",
        inputId: 1006
      },
      {
        name: '生產年份',
        focus: false,
        content: "",
        inputId: 1007
      },
      {
        name: '車牌號',
        focus: false,
        content: "",
        inputId: 1008
      }
    ],
  },
  /**
   * confirmButtonCtrl
   */
  confirmBtnClicked: function (event) {
    console.log(event)
    console.log(event.detail)
    var that = this
    console.log(that.data.list1)
    console.log(that.data.list2)

    var tempArray1 = that.data.list1
    var tempArray2 = that.data.list2
    var i = event.target.id - 1000
    console.log("confirm-" + i)
    if (i < tempArray1.length) {
      //list1
      tempArray1[i].focus = false
      tempArray1[i].content = event.detail.value
      if (i !== tempArray1.length - 1) {
        tempArray1[i + 1].focus = true
      } else {
        tempArray2[0].focus = true
      }
    } else if (i < (tempArray1.length + tempArray2.length)) {
      //list2
      var j = i - tempArray1.length
      tempArray2[j].focus = false
      tempArray2[j].content = event.detail.value
      if (j !== tempArray2.length - 1) {
        tempArray2[j + 1].focus = true
      } else {
        console.log("all lose focus!")
      }
    }
    that.setData({
      list1: tempArray1,
      list2: tempArray2
    })
    if (event.target.id === "1008") {
      console.log("print data.list1:")
      console.log(this.data.list1)
      console.log("print data.list2:")
      console.log(this.data.list2)
    }
  },
  inputFocus: function (event) {
    // var tempArray1 = this.data.list1
    // var tempArray2 = this.data.list2
    // var i = event.target.id - 1000
    // console.log("inputFocus-" + i)
    // if (i < tempArray1.length) {
    //   //list1
    //   if (tempArray1[i].focus) {
    //     return
    //   }
    //   tempArray1[i].focus = true
    // } else if (i < (tempArray1.length + tempArray2.length)) {
    //   //list2
    //   if (tempArray2[i - tempArray1.length].focus) {
    //     return
    //   }
    //   tempArray2[i - tempArray1.length].focus = true
    // }

    // this.setData({
    //   list1: tempArray1,
    //   list2: tempArray2
    // })

  },
  inputblur: function (event) {
    // var tempArray1 = this.data.list1
    // var tempArray2 = this.data.list2
    // var i = event.target.id - 1000
    // console.log("inputblur-" + i)
    // if (i < tempArray1.length) {
    //   //list1
    //   if (!tempArray1[i].focus) {
    //     return
    //   }
    //   tempArray1[i].focus = false
    //   if (i !== tempArray1.length - 1) {
    //     tempArray1[i + 1].focus = true
    //   } else {
    //     tempArray2[0].focus = true
    //   }

    // } else if (i < (tempArray1.length + tempArray2.length)) {
    //   //list2
    //   var j = i - tempArray1.length
    //   if (!tempArray2[j].focus) {
    //     return
    //   }
    //   tempArray2[j].focus = false
    //   if (j !== tempArray2.length - 1) {
    //     tempArray2[j + 1].focus = true
    //   } else {
    //     console.log("all lose focus!")
    //   }
    // }
    // this.setData({
    //   list1: tempArray1,
    //   list2: tempArray2
    // })
  },

  /**
   * 生命周期函數--監聽頁面加載
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函數--監聽頁面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函數--監聽頁面顯示
   */
  onShow: function () {

  },

  /**
   * 生命周期函數--監聽頁面隱藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函數--監聽頁面卸載
   */
  onUnload: function () {

  },

  /**
   * 頁面相關事件處理函數--監聽用戶下拉動作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 頁面上拉觸底事件的處理函數
   */
  onReachBottom: function () {

  },

  /**
   * 用戶點擊右上角分享
   */
  onShareAppMessage: function () {

  }
})

原諒我直接把所有代碼都考過來了,哈哈,主要是我不想刪,最開始考慮的是直接點擊confirm鍵就下一個input聚焦,但是發現微信小程序這個只能讓鍵盤一彈一收一彈一收,所以我還在input的聚焦和失去聚焦函數里嘗試過感覺麻煩 不實際,還是在confirmbutton的響應事件里寫吧,萬一以后鍵盤不用一彈一收一彈一收了呢,嘿嘿。
這算是我的一個小筆記吧,以后有時間了還會再寫的,可能設計很幼稚,也可能你有更好的方法,歡迎大家留言交流,輕點噴,輕點噴。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,656評論 25 708
  • 第19天·21天美顏瘦身課 每一位都可以通過這張卡片覺察自己: 1、直覺他叫什么名字?胖妮 2、他幾歲了?43 3...
    笑嫣不忘初衷閱讀 259評論 0 0
  • 夢里幾度尋,穿越風雪幾程,卻不見故人在燈火闌珊處。夜深風竹敲竹韻,萬葉千聲皆是恨。 夢醒獨上高樓,擬把歸期托鴻雁,...
    馨雪清菡閱讀 1,162評論 19 12
  • 前言 influxdb是目前比較流行的時間序列數據庫。 何謂時間序列數據庫?什么是時間序列數據庫,最簡單的定義就是...
    miaoLoveCode閱讀 84,075評論 7 50
  • 最后一抹暮色退去了 文/南倚閑坐 最后一抹暮色退去了 桔紅霞光 躲進林海云天 風車扇滅日的熱情 我目送天邊一抺暖意...
    南倚閑坐閱讀 179評論 0 0