zoukankan      html  css  js  c++  java
  • vue深度监听之手机格式344

    需求是让输入框输入手机号让他显示344的格式

     

     如果手机号输入框绑定的是直接一个属性的话可以使用watch直接监听,但是需求是放在一个对象里面(因为要点击提交的时候进行输入框验证),所以现在需要监听的就是对象的一个属性,需要使用watch的深度监听

    放上代码

    <template>
      <div>
        <div class="binding_main_nav">
          <div class="binding_main_nav_div" @click="bindingemailfn">
            <div class="binding_main_nav_div_noselection"></div>
            <span>绑定邮箱</span>
          </div>
          <div class="binding_main_nav_div">
            <div class="binding_main_nav_div_selection"></div>
            <span>绑定手机</span>
          </div>
          <div class="binding_main_nav_div" @click="bindingpasswordfn">
            <div class="binding_main_nav_div_noselection"></div>
            <span>修改密码</span>
          </div>
        </div>
        <div class="binding_main_body">
          <div class="binding_main_body_msg">
            <span>点击“获取验证码”接收验证码,并完成验证</span>
          </div>
          <div class="binding_main_body_form">
            <el-form class="bindingphone-form" :rules="bindingphonemsg" :model="binding" ref="binding">
              <el-form-item prop="bindingphone">
                <span class="bindingphoneImg">
                  <img src="@/assets/img/binding/shouji.png" />
                </span>
                <el-input placeholder="请输入手机号" type="text" tabindex="1" v-model="binding.telephone"  maxlength="13"/>
              </el-form-item>
    
              <el-form-item prop="bindingphoneverifica" class="bindingphoneverifica">
                <span class="bindingphoneImg">
                  <img src="@/assets/img/login/loginyanzhengma.png" />
                </span>
                <el-input
                  placeholder="请输入验证码"
                  v-model="binding.verifica"
                  onkeyup="this.value=this.value.replace(/[^d.]/g,'');"
                  type="text"
                  tabindex="2"
                  maxlength="6"
                />
              </el-form-item>
              <el-button class="bindingphone_form_btn" type="primary">获取验证码</el-button>
            </el-form>
            <el-button type="primary" class="bindingphoneverificabtn">确定</el-button>
          </div>
        </div>
      </div>
    </template>
    
    <script>
      import { validEmail, validPhone } from "@/components/login/validate";
      import config from "@/config";
    export default {
      data() {
        var checkvalidate = (rule, value, callback) => {
          if (this.binding.verifica == "") {
            callback(new Error("不能为空且只能为数字"));
          }
          if (this.binding.verifica.length < 6) {
            callback(new Error("长度不能小于六位"));
          } else {
            callback();
          }
        };
        var checkUserName = (rule, value, callback) => {
          if (this.binding.telephone == "" || !this.binding.telephone.trim()) {
            callback(new Error("手机号不能为空"));
          }
          if (!validPhone(this.binding.telephone)) {
            callback(new Error("请输入正确的手机号格式"));
          } else {
            callback();
          }
        };
        return {
          binding:{
            telephone : "",
            verifica: "",
          },
          bindingphonemsg: {
            bindingphone: [
              { required: true, validator: checkUserName, trigger: "blur" }
            ],
            bindingphoneverifica: [
               { required: true, validator: checkvalidate, trigger: "blur" }
            ]
          }
        }
      },
      methods:{
            bindingemailfn(){
                this.$router.push('/bindingmodifica/email')
            },
            bindingpasswordfn(){
                this.$router.push('/bindingmodifica/newpassword')
            },
      },
    
      watch:{
        'binding.telephone':{
            deep:true,
            handler:function(newValue,oldValue){
              
               if (newValue > oldValue) {
                if (newValue.length === 4 || newValue.length === 9) {
                  var pre = newValue.substring(0, newValue.length - 1);
                  var last = newValue.substr(newValue.length - 1, 1);
                  this.binding.telephone = pre + ' ' + last;
                } else {
                  this.binding.telephone = newValue;
                }
              } else {
                if (newValue.length === 9 || newValue.length === 4) {
                  this.binding.telephone = this.binding.telephone.trim();
                } else {
                  this.binding.telephone = newValue;
                }
              }
            }
          }
      }
    
    };
    </script>
    
    <style>
    </style>
  • 相关阅读:
    搞定Mac Maven
    《数学之美》读书笔记
    Scalable Web Architecture and Distributed Systems
    【程序员】修炼之书
    用平常心,做非常事(字节跳动九周年张一鸣演讲)
    动态规划题目总结
    Spring Boot 启动时,让方法自动执行的 4 种方法!
    MybatisGenerator生成mapper、dao、entity
    HTTPS的GET、POST、PUT、DELETE请求
    SpringBoot使用Slf4j进行日志配置
  • 原文地址:https://www.cnblogs.com/huchong-bk/p/12144653.html
Copyright © 2011-2022 走看看