欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue中Element-ui 输入银行账号每四位加一个空格的实现代码

程序员文章站 2022-06-30 10:50:03
一、问题描述:     我们在输入银行账号会设置每四位添加一个空格,输入金额,每三位添加一个空格。那么,在vue,element-ui 组件...

一、问题描述:

    我们在输入银行账号会设置每四位添加一个空格,输入金额,每三位添加一个空格。那么,在vue,element-ui 组件中,如何实现呢?

二、效果图:

vue中Element-ui 输入银行账号每四位加一个空格的实现代码

三、实现代码:

<el-table-column prop="account" label="银行账号">
  <template slot-scope="scope">
   <el-input type="text" maxlength="23" v-model="scope.row.account" placeholder="请输入银行账号"   
     @change="validatenum(scope.$index)"></el-input>
  </template>
</el-table-column>
// 输入银行卡号
 validatenum (index) {
  this.setnum(this.supplierobjs.supplierbankaccount, index)
 },
// 设置银行卡号,每四位添加一个空格
 setnum (data, index) {
  data.foreach((element, i) => {
  element.account = element.account.replace(/\s/g, '').replace(/[^\d]/g, '').replace(/(\d{4})(?=\d)/g, '$1 ')
  this.$set(element, 'account', element.account)
  })
 },

四、思路:

   1、在组件的change事件中添加实现方法(因为我们的业务需求是可以添加多个银行卡号,所以用index做了区分),取出每行的值;

   2、用element.account = element.account.replace(/\s/g, '').replace(/[^\d]/g, '').replace(/(\d{4})(?=\d)/g, '$1 '),类似正则表达式的方法对数据进行处理;

   3、this.$set(element, 'account', element.account),set方法,将处理后的值set到model中,处理后的数据就保存到model中了。

         实现起来也非常简单,但是因为element-ui没有提供输入设置的方法,所以需要自己根据需求完善一下。

补充:下面看下js 填写银行卡号时,每4个数字用空格隔开

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <title>document</title>
  <script src="js/jquery.js"></script>
</head>
<body>
  <script>
  var num = 0;
  function inputaccount(){
   var str = $('#bankcard').val();
   var elem = document.getelementbyid("bankcard");
   console.log(elem);
   if(str.length > num){
     var c = str.replace(/\s/g, ""); 
     if(str != "" && c.length > 4 && c.length % 4 == 1){
      $('#bankcard').val(str.substring(0, str.length - 1)+ " " + str.substring(str.length - 1, str.length));
     }
   }
   if(elem.setselectionrange){//w3c
      settimeout(function(){
        elem.setselectionrange(elem.value.length,elem.value.length);
        elem.focus();
      },0);
    }else if(elem.createtextrange){//ie
      var textrange=elem.createtextrange();
      textrange.movestart("character",elem.value.length);
      textrange.moveend("character",0);
      textrange.select();
    }
   num = str.length;
 }
  </script>
  <input type="text" name="" oninput="inputaccount()" id="bankcard" />
</body>


</html>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <title>document</title>
  <script src="js/jquery.js"></script>
</head>
<body>
  <input type="text" name="" id="box" />
  <script>
   $(function(){
    $('#box').keyup(function(){
     var value=$(this).val().replace(/\s/g,'').replace(/(\d{4})(?=\d)/g,"$1 "); 
     $(this).val(value)
    }) 
   }) 
  </script>
</body>
</html>

总结

以上所述是小编给大家介绍的vue中element-ui 输入银行账号每四位加一个空格的实现代码,希望对大家有所帮助