当前位置: 首页 > article >正文

js vue 输入正确手机号/邮箱后,激活“发送验证码”按钮

按钮禁止点击状态:按钮禁止点击状态
按钮能够点击状态:按钮能够点击状态

我采用的方式是监听手机号/邮箱输入框的输入事件,即实判断用户输入的数据是否满足规则,如果满足手机号/邮箱规则,则激活“获取验证码”按钮。

话不多说,上代码

样式:
        <!-- 注册方式 -->
        <a-form-model-item prop="accountType">
          <a-select
            v-model="form.accountType"
            @change="switchHandle" //切换手机号/邮箱进行的操作
            :getPopupContainer="triggerNode => triggerNode.parentNode"
          >
            <!-- 邮箱 -->
            <a-select-option style="font-size: 14px" value="3">
              {{ $t("word68") }}
            </a-select-option>
            <!-- 手机号 -->
            <a-select-option style="font-size: 14px" value="2">
              {{ $t("plant_detail259") }}
            </a-select-option>
          </a-select>
        </a-form-model-item>
        <!-- 手机号 -->
        <a-form-model-item
          prop="phoneNumber"
          v-if="!flag" //判断是手机号/邮箱
        >
            <a-input
              class="spacial-input"
              :placeholder="$t('user29')"
              v-model="form.phoneNumber" //手机号
              :maxLength="45"
              @input="getVal(1)" //监听输入事件!!!这里重要
            />
        </a-form-model-item>
        <!-- 邮箱 -->
        <a-form-model-item
          ref="email"
          prop="email"
          v-if="flag"
        >
          <a-input
            v-model="form.email" // 邮箱
            key="email"
            @input="getVal(2)" //监听输入事件!!!这里重要
            :maxLength="256"
            :placeholder="$t('wyf_731_register_info_21')"
          />
        </a-form-model-item>
        <!-- 验证码 -->
        <a-form-model-item v-bind="formItemLayout" prop="checkNum">
          <!-- 请输入验证码 -->
          <a-input
            style="width: 100%"
            onkeyup="this.value=this.value.replace(/[, ]/g,'')"
            :maxLength="50"
            v-model="form.checkNum"
            :placeholder="$t('wyf_731_register_info_17')"
          >
            <template>
              <a-button
                slot="suffix"
                class="sendCheck fr"
                :class="sendCheckBtnFlag ? 'btnActiveStyle' : ''"// 根据禁用or激活状态,更改样式
                ref="sendCheck"
                @click="sendCheckHandle"
                :disabled="!sendCheckBtnFlag" // 判断禁用or激活状态
              >
                <!-- 获取验证码 -->
                {{ timer ? num : $t("wyf_731_register_info_4") }} //倒计时or发送验证码
              </a-button>
            </template>
          </a-input>
        </a-form-model-item>





方法:
    /**
     * 切换邮箱或者手机
     */
    switchHandle(value) {
      if (value == "3") {
        this.flag = true
      } else {
        this.flag = false
      }
      // 输入框的值清空
      this.form.email = ""
      this.form.phoneNumber = ""
      this.form.checkNum = ""
      // 验证码按钮禁用
      this.sendCheckBtnFlag = false
      // 禁用下一步按钮
      this.registerBtnFlag = false
      // 清除校验
      this.$refs["registForm"].clearValidate(["email", "phoneNumber"]) //清除校验信息
      localStorage.setItem("defaultActiveInput", this.flag ? "3" : "2")
    },
    // 接收input框内的值 !!!!!!!!!
    getVal(num) {
      if (num == "2") {
      // 校验邮箱是否输入正确
        this.$refs.registForm.validateField(["email"], error => {
          if (error != "") {
            this.sendCheckBtnFlag = false
          } 
          // 输入正确且验证码倒计时为空,则激活 验证码 按钮
          else if (error == "" && this.timer == null) {
            this.sendCheckBtnFlag = true
          }
        })
      } else if (num == 1) {
      // 校验手机号是否输入正确
        this.$refs.registForm.validateField(["phoneNumber"], error => {
          if (error != "") {
            this.sendCheckBtnFlag = false
          } 
          // 输入正确且验证码倒计时为空,则激活 验证码 按钮
          else if (error == "" && this.timer == null) {
            this.sendCheckBtnFlag = true
          }
        })
      }
    },

http://www.kler.cn/news/161074.html

相关文章:

  • 详解线段树
  • C语言——指针的运算
  • LLM(五)| Gemini:谷歌发布碾压GPT-4最强原生多模态,语言理解能力首次超过人类
  • Java API接口强势对接:构建高效稳定的系统集成方案
  • java-HashMap、TreeMap、LinkedHashMap、ArrayList、LinkedList使用笔记
  • 什么是https 加密协议?https证书安装部署
  • 微信小程序复制功能
  • 如何通过内网穿透实现无公网IP也能远程访问内网的宝塔面板
  • C# WPF上位机开发(抽奖软件)
  • 【云原生系列】Kubernetes知识点
  • Python-字典详解
  • 一个简单的参数帮助框架,c实现
  • Android 架构实战MVI进阶
  • Vue3的watch函数中,第三个参数配置对象详细分析
  • uniapp横向滚动示例
  • JavaSE语法之五:数组的定义与使用(超详解!!!)
  • Android12之MediaCodec硬编解码调试手段(四十九)
  • python基于ModBusTCP服务端的业务实现特定的client
  • 反钓鱼防盗号,共筑校园安全防线!Coremail出席CERNET学术年会
  • 案例054:基于微信的追星小程序
  • 代码随想录算法训练营第四十二天 _ 动态规划_01背包问题、416.分割等和子集。
  • 医院有HIS系统,为什么还要开发预约挂号小程序?数据如何互通?
  • 前端笔记(三)CSS 盒子模型
  • ★538. 把二叉搜索树转换为累加树
  • PHP使用HTTP代码示例模板
  • gpt3、gpt2与gpt1区别
  • 深入理解 Java 虚拟机(JVM)从入门到精通
  • 使用GPT-4V解决Pycharm设置问题
  • 西工大计算机学院计算机系统基础实验一(函数编写11~14)
  • Java程序员,你掌握了多线程吗?