解決微信小程序銀行卡號輸入轉換格式問題
輸入框:
輸入后的值:
樣式太丑了,決定換一個樣式
給輸入框一個監聽事件
(輸入的值長度+1) % 5 等于 0 就加上空格,但是后來發現,用戶回刪數據的時候依舊在監聽,導致空格刪除不了,當輸入的長度為4 則加上空格,用戶回刪空格觸發監聽事件,長度繼續為4 繼續加上空格…..
思考一番后決定給予一個數據中轉站,將每次輸入的值長度給予中轉站,每次首先根據中轉站的數據判斷用戶是在輸入還是回刪,輸入則加上空格,回刪則除去尾部空格。
效果如下
比起之前的樣式好看多了
js代碼
- var app = getApp()
- Page({
- data: {
- userInputCardNo2:'',
- //長度中轉站
- cardlen : 0
- },
- //輸入框的監聽事件
- BankCardNoInput: function(e){
- var card = e.detail.value;
- var len = card.length
- //判斷用戶是輸入還是回刪
- if(len > this.data.cardlen){
- //用戶輸入
- if((len+1) % 5 == 0){
- card = card+' '
- }
- }else{
- //用戶回刪
- card = card.replace(/(^/s*)|(/s*$)/g, "")
- }
- //將處理后的值賦予到輸入框
- this.setData({
- userInputCardNo : card
- })
- //將每次用戶輸入的卡號長度賦予到長度中轉站
- this.setData({
- cardlen:len
- })
- },
- bindViewTap: function() {
- wx.navigateTo({
- url: '../logs/logs'
- })
- },
- onLoad: function () {
- }
- })
2017-02-20
新BUG為 用戶輸入12345會轉成1234 5但是用戶回刪2次,變成1234再次輸入的時候,長度為5,判斷為用戶回刪,不作處理,目前我所解決的方法是在js接受用戶輸入的卡號時將所有空格去除并獲取長度,長度為5、9、13、17這幾個地方時進行切割字符串,感覺這樣處理不是很好,期望有大牛能指導一下
代碼使用位置:
- if(len > this.data.cardlen){
- if(len % 4 == 0){
- card = card+' '
- }
- if(len/5 == 1||len/9 == 1||len%13 == 0||len%17 == 0){
- var checkNo = checkCardNo(len,card)//處理的方法
- if(card != checkNo){
- card = checkNo
- }
- }
- }
js新增代碼如下:
- function checkCardNo(len,card){
- var newStr = ""
- var card = card.replace(//s/g,"")
- if(len >= 5){
- newStr = newStr+card.substr(0,4)+" "
- }
- if(len >= 9){
- newStr = newStr+card.substr(4,4)+" "
- }
- if(len >= 13){
- newStr = newStr+card.substr(8,4)+" "
- }
- if(len >= 17){
- newStr = newStr+card.substr(12,4)+" "
- }
- newStr = newStr + card.substr(len-1,len)
- return newStr
- }
新聞熱點
疑難解答