Vue输入电话号码按3-4-4 空格分隔

870 阅读1分钟

用户在input框填写(包含输入和删除)手机号时,动态添加空格,这样只是为了方便客户看。当传递手机号给后台时,需要去掉空格。 代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
</head>

<body>
  <div id="app">
    <input type="tel"  placeholder="请输入手机号" v-model="phoneNumberInput"
      maxlength="13" />
  </div>
</body>
<script>
  var vm = new Vue({
    el: "#app",
    data() {
      return {
        phoneNumberInput: "",
        phoneNumber: ""
      };
    },
    watch: {
      // 通过watch来设置空格
      phoneNumberInput(val, oldValue) {
        // console.log(val,oldValue);
        if (val.length > oldValue.length) {
          // 文本框中输入
          if (val.length === 4 || val.length === 9) {
            let length = val.length
            this.phoneNumberInput = val.substr(0, length - 1) + ` ${val[length - 1]}`
          }
        } else {
          // 文本框中删除
          if (val.length === 9 || val.length === 4) {
            this.phoneNumberInput = this.phoneNumberInput.replace(/\s*$/g, "");
          }
        }
        if (val.length >= 13) {
          this.phoneNumber = val.replace(/\s+/g, "")
          console.log(this.phoneNumber);
        }
      },
    },
  });
</script>

</html>