首页 > 课堂 > 小程序 > 正文

解决微信小程序银行卡号输入转换格式的问题

2020-03-21 16:18:32
字体:
来源:转载
供稿:网友

解决微信小程序银行卡号输入转换格式问题

输入框:

微信小程序,转换格式,小程序开发

输入后的值:

微信小程序,转换格式,小程序开发

样式太丑了,决定换一个样式

给输入框一个监听事件

微信小程序,转换格式,小程序开发
微信小程序,转换格式,小程序开发

(输入的值长度+1) % 5 等于 0 就加上空格,但是后来发现,用户回删数据的时候依旧在监听,导致空格删除不了,当输入的长度为4 则加上空格,用户回删空格触发监听事件,长度继续为4 继续加上空格…..

思考一番后决定给予一个数据中转站,将每次输入的值长度给予中转站,每次首先根据中转站的数据判断用户是在输入还是回删,输入则加上空格,回删则除去尾部空格。

效果如下

微信小程序,转换格式,小程序开发

比起之前的样式好看多了

js代码

  1. var app = getApp() 
  2.  
  3. Page({ 
  4.  
  5.   data: { 
  6.  
  7.     userInputCardNo2:''
  8.  
  9.     //长度中转站 
  10.  
  11.     cardlen : 0 
  12.  
  13.   }, 
  14.  
  15.   //输入框的监听事件 
  16.  
  17.   BankCardNoInput: function(e){ 
  18.  
  19.     var card = e.detail.value; 
  20.  
  21.     var len = card.length 
  22.  
  23.     //判断用户是输入还是回删 
  24.  
  25.     if(len > this.data.cardlen){ 
  26.  
  27.       //用户输入 
  28.  
  29.       if((len+1) % 5 == 0){ 
  30.  
  31.         card = card+' ' 
  32.  
  33.       } 
  34.  
  35.     }else
  36.  
  37.       //用户回删 
  38.  
  39.       card = card.replace(/(^/s*)|(/s*$)/g, ""
  40.  
  41.     } 
  42.  
  43.     //将处理后的值赋予到输入框 
  44.  
  45.     this.setData({ 
  46.  
  47.       userInputCardNo : card 
  48.  
  49.     }) 
  50.  
  51.     //将每次用户输入的卡号长度赋予到长度中转站 
  52.  
  53.     this.setData({ 
  54.  
  55.       cardlen:len 
  56.  
  57.     }) 
  58.  
  59.   }, 
  60.  
  61.   bindViewTap: function() { 
  62.  
  63.     wx.navigateTo({ 
  64.  
  65.       url: '../logs/logs' 
  66.  
  67.     }) 
  68.  
  69.   }, 
  70.  
  71.   onLoad: function () { 
  72.  
  73.   } 
  74.  
  75. }) 

2017-02-20 

新BUG为 用户输入12345会转成1234 5但是用户回删2次,变成1234再次输入的时候,长度为5,判断为用户回删,不作处理,目前我所解决的方法是在js接受用户输入的卡号时将所有空格去除并获取长度,长度为5、9、13、17这几个地方时进行切割字符串,感觉这样处理不是很好,期望有大牛能指导一下

代码使用位置:

  1. if(len > this.data.cardlen){ 
  2.  
  3.       if(len % 4 == 0){ 
  4.  
  5.         card = card+' ' 
  6.  
  7.       } 
  8.  
  9.       if(len/5 == 1||len/9 == 1||len%13 == 0||len%17 == 0){ 
  10.  
  11.         var checkNo = checkCardNo(len,card)//处理的方法 
  12.  
  13.         if(card != checkNo){ 
  14.  
  15.           card = checkNo 
  16.  
  17.         } 
  18.  
  19.       } 
  20.  
  21.     } 

js新增代码如下:

  1. function checkCardNo(len,card){ 
  2.  
  3.   var newStr = "" 
  4.  
  5.   var card = card.replace(//s/g,""
  6.  
  7.   if(len >= 5){ 
  8.  
  9.     newStr = newStr+card.substr(0,4)+" " 
  10.  
  11.   } 
  12.  
  13.   if(len >= 9){ 
  14.  
  15.     newStr = newStr+card.substr(4,4)+" " 
  16.  
  17.   } 
  18.  
  19.   if(len >= 13){ 
  20.  
  21.     newStr = newStr+card.substr(8,4)+" " 
  22.  
  23.   } 
  24.  
  25.   if(len >= 17){ 
  26.  
  27.     newStr = newStr+card.substr(12,4)+" " 
  28.  
  29.   } 
  30.  
  31.   newStr = newStr + card.substr(len-1,len) 
  32.  
  33.   return newStr 
  34.  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表