表单邮箱密码登录 原生+Jquery实现

news/2024/7/11 1:27:42 标签: jquery, 前端, javascript

文章目录

    • 效果
    • 代码
      • 邮箱验证正则表达式
      • HTML
      • CSS
    • JS

效果

请添加图片描述

正确密码为:123456
点击登录按钮校验。

代码

表单校验 - CodeSandbox

邮箱验证正则表达式

/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/

HTML

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>HTML + CSS</title>
    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <div class="emailSign">
      <div class="emailInput">
        <input type="text" placeholder="邮箱" maxlength="256" />
        <p class="emailInvalid inputError">请输入正确邮箱</p>
      </div>

      <div class="pwdInput">
        <input
          class="pwdValue"
          type="password"
          name=""
          id=""
          placeholder="密码(6-32位)"
          minlength="6"
          maxlength="32"
        />
      </div>
      <p class="pwdEmpty inputError">请输入密码</p>
      <p class="bothError inputError">邮箱或密码错误</p>
      <p class="pwdShort inputError">密码在6-32位</p>

      <div class="btn">Sign in</div>
    </div>

    <!-- <script  type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script> -->
    <script
      type="text/javascript"
      src="https://s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"
    ></script>
    <script src="./index.js"></script>
  </body>
</html>

CSS

.emailSign {
  display: flex;
  flex-direction: column;
  padding: 16px 20px;
}

.emailInput input,
.pwdInput input {
  box-sizing: border-box;
  height: 48px;
  width: 100%;
  padding: 12px 16px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.1);
}

.emailSign .emailInput {
  margin-bottom: 32px;
}

.emailSign input {
  color: #333;
}

.emailSign .btn {
  height: 48px;
  line-height: 48px;
  text-align: center;
  margin-top: 36px;
  font-size: 16px;
  font-weight: 500;

  color: #fff;
  border-radius: 12px;
  background: #ff2828;
  opacity: 0.2;
}

.inputError {
  margin-top: 4px;
  margin-left: 12px;
  color: #ff2828;
  font-size: 12px;
  font-weight: 400;
}

JS

javascript">init();

// 输入框填写则按钮高亮,否则置灰
$(".pwdValue").change(function () {
  if (btnStateCheck()) $(".btn").css("opacity", "1");
  else $(".btn").css("opacity", "0.2");
});

$(".emailInput input").change(function () {
  if (btnStateCheck()) $(".btn").css("opacity", "1");
  else $(".btn").css("opacity", "0.2");
});

// 点击按钮
$(".btn").on("click", function (e) {
  btnClick();
});

// 初始化
function init() {
  emailSuccess();
  pswClearError();
}

// 点击按钮
function btnClick() {
  let flag1 = emailCheck();
  let flag2 = pswCheck();
  if (flag1 && flag2) {
    emailSuccess();
    pswClearError();
  }
}

// 输入框都填写返回true
function btnStateCheck() {
  const psw = $(".pwdValue")[0].value;
  const email = $(".emailInput input")[0].value;
  if (psw !== "" && email !== "") return true;
  else return false;
}

// 验证是否是邮箱
function isEmail(str) {
  var reg =
    /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
  return reg.test(str);
}

// 检查邮箱是否合法
function emailCheck() {
  const email = $(".emailInput input")[0].value;
  let flag = false;

  if (email === "" || !isEmail(email)) {
    emailError();
  } else {
    emailSuccess();
    flag = true;
  }

  return flag;
}

// 邮箱合法与否
function emailError() {
  $(".emailInput input").css("border", "1px solid #ff2828");
  $(".emailInvalid").show();
}

function emailSuccess() {
  $(".emailInput input").css("border", "");
  $(".emailInvalid").hide();
}

// 密码输入正确
function pswClearError() {
  $(".pwdEmpty").hide();
  $(".bothError").hide();
  $(".pwdShort").hide();
  $(".emailInput input").css("border", "");
  $(".pwdInput input").css("border", "");
}

// 验证密码是否合法
function pswCheck() {
  const psw = $(".pwdValue")[0].value;
  if (psw === "") {
    pswClearError();
    $(".pwdEmpty").show();
    $(".pwdInput input").css("border", "1px solid #ff2828");
    return false;
  } else if (psw.length < 6) {
    pswClearError();
    $(".pwdShort").show();
    $(".pwdInput input").css("border", "1px solid #ff2828");
    return false;
  } else if (psw !== "123456") {
    // 假设密码是123456
    pswClearError();
    $(".bothError").show();
    $(".emailInput input").css("border", "1px solid #ff2828");
    $(".pwdInput input").css("border", "1px solid #ff2828");
  } else {
    return true;
  }
}


http://www.niftyadmin.cn/n/5211499.html

相关文章

2023软件测试6大实战练手项目,你不打算看看嘛

前言 写了9年多年的代码&#xff0c;之前做过网易的架构师&#xff0c;在技术这条路上跌跌撞撞了很多&#xff0c;我今天在这里向大家介绍6个适合新人练手的项目&#xff0c;这些项目来自不同领域和行业&#xff0c;涵盖了金融、医药、电商等多个领域。如果您正在寻找一个可以…

【ARM 嵌入式 编译系列 2.3 -- GCC 中指定 ARMv8-M 的 Thumb 指令集参数详细介绍】

请阅读【ARM GCC 编译专栏导读】 上篇文章:【ARM 嵌入式 编译系列 2.2 – 如何在Makefile 中添加编译时间 | 编译作者| 编译 git id】 下篇文章:【ARM 嵌入式 C 入门及渐进 3 – GCC attribute((weak)) 弱符号使用】 文章目录 ARMv8-M 架构Thumb 指令集ARMv8-M 与 Thumb-mth…

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第四套区块链应用后端开发

第四套区块链应用后端开发 环境 : ubuntu20 fisco : 2.8.0 springboot 2.1.1 fisco-java-sdk: 2.7.2 maven 3.8.8 前言 这套后端样题,只涉及调用fisco的系统接口,不涉及此食品溯源项目的业务接口,所以我就直接生成一个springboot项目进行完成此题目。 请提前准备好一…

机器学习-激活函数的直观理解

机器学习-激活函数的直观理解 在机器学习中&#xff0c;激活函数&#xff08;Activation Function&#xff09;是用于引入非线性特性的一种函数&#xff0c;它在神经网络的每个神经元上被应用。 如果不使用任何的激活函数&#xff0c;那么神经元的响应就是wxb&#xff0c;相当…

色彩 (3)AWB问题

#灵感# AWB 的问题&#xff0c;说难其实也不是很难。 前提&#xff1a; 对于特定的光信号输入&#xff0c;设备的输出信号取决于RGB三通道的频率响应&#xff0c;不同的sensor频率响应一般是不同的。QE曲线描述的就是图像传感器的光电转换效率. 1、灰区设置 标定用标准光源灯…

基于Python的新浪微博爬虫程序设计与实现

完整下载&#xff1a;基于Python的新浪微博爬虫程序设计与实现.docx 基于Python的新浪微博爬虫程序设计与实现 Design and Implementation of a Python-based Weibo Web Crawler Program 目录 目录 2 摘要 3 关键词 4 第一章 引言 4 1.1 研究背景 4 1.2 研究目的 5 1.3 研究意义…

案例018:基于微信小程序的实习记录系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

野指针详解

1.定义 概念&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#xff09;。 2.野指针成因 A.指针未初始化 #include <stdio.h> int main() { int *p;//局部变量指针未初始化&#xff0c;默认为随机值*p 20;return 0;…