Vue + Node 手机号、密码登录 前端逻辑

<div class="login-tel">
        <input
          type="text"
          v-model="userTel"
          placeholder="请输入手机号"
          pattern="[0-9]*"
        />
      </div>
      <div class="login-tel">
        <input type="text" v-model="userPwd" placeholder="请输入密码" />
      </div>
<div class="login-btn" @click="login()">登录</div>

import { Toast } from "mint-ui";
import http from "@/common/api/request.js";

data() {
    return {
      userTel: "", //用户输入的手机号
      userPwd: "", //用户输入的密码
      //验证规则是个对象
      rules: {
        //手机号验证 key
        userTel: {
          rule: /^1[23456789]\d{9}$/,
          msg: "手机号不能为空,并且是11位数字",
        },
        //密码验证 key
        userPwd: {
          rule: /^\w{6,12}$/,
          msg: "密码不能为空,并且是6-12位",
        },
      },
    };
  },
  methods: {
    //登录
    login() {
      //前端验证
      //validate函数 把手机号/密码的字符串作为实参
      if (!this.validate("userTel")) return; //如果函数返回false 则用return来终止login函数
      if (!this.validate("userPwd")) return; //如果函数返回false 则用return来终止login函数
    //发送请求,后端验证
      http
        .$axios({
          url: "/api/login",
          method: "POST",
          data: {
            userTel: this.userTel,
            userPwd: this.userPwd,
          },
        })
        .then((res) => {
          //提示信息
          Toast(res.msg);
          //登录失败 就终止
          if (!res.success) return;
          //登录成功 =》跳转页面
        });
      
    },
    //验证信息提示
    validate(key) {
      let bool = true;
      //key是“userTel”或者“userPwd”
      if (!this.rules[key].rule.test(this[key])) {
        //如果不匹配 则提示信息
        Toast(this.rules[key].msg);
        bool = false;
        return false; //如果不匹配正则 终止函数 并且返回false
      }
      return bool; //如果匹配正则 就没进入以上条件 返回true
    },
  },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值