用javascript制作qq注册动态页面

下面是用 JavaScript 制作 QQ 注册动态页面的攻略:

1. 前置知识

在进行动态页面制作前,需要掌握以下一些前置知识:

  • HTML:前端页面标记语言,用于编写网页基本结构和内容;
  • CSS:前端页面样式表语言,用于美化网页界面;
  • JavaScript:前端脚本语言,用于实现网页交互和动画效果;
  • DOM:文档对象模型,即用 JavaScript 操作页面元素的接口;
  • AJAX:异步 JavaScript 和 XML,用于无需刷新页面即可进行数据交互。

2. 制作流程

QQ 注册动态页面制作的主要流程如下:

  1. 编写 HTML 结构和 CSS 样式。
  2. 使用 DOM 和 AJAX 实现交互效果。

下面将针对具体需求,展示两种示例演示效果,以帮助你更好地理解制作过程。

示例一

HTML 结构

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>QQ 注册</title>
</head>

<body>
  <!-- 注册表单 -->
  <form id="register-form">
    <div>
      <label for="username">用户名:</label>
      <input type="text" id="username" placeholder="请输入用户名">
    </div>
    <div>
      <label for="password">密码:</label>
      <input type="password" id="password" placeholder="请输入密码">
    </div>
    <div>
      <label for="confirm-password">确认密码:</label>
      <input type="password" id="confirm-password" placeholder="请再次输入密码">
    </div>
    <div>
      <label for="email">邮箱:</label>
      <input type="text" id="email" placeholder="请输入邮箱">
    </div>
    <button type="submit">提交</button>
  </form>
</body>

</html>

CSS 样式

/* 全局样式 */
* {
  box-sizing: border-box;
}

body {
  font-family: "Arial", sans-serif;
}

/* 表单样式 */
form {
  margin: 20px auto;
  width: 300px;
}

label {
  display: block;
  margin-bottom: 5px;
}

input[type="text"],
input[type="password"] {
  padding: 5px;
  border: 1px solid #ccc;
  border-radius: 3px;
  outline: none;
}

button[type="submit"] {
  margin-top: 10px;
  padding: 5px 10px;
  border: none;
  border-radius: 3px;
  background-color: #4CAF50;
  color: #fff;
  cursor: pointer;
}

JavaScript 实现

// 监听表单提交事件
document.querySelector("#register-form").addEventListener("submit", function(event) {
  // 阻止表单默认提交行为
  event.preventDefault();

  // 获取表单中的值
  var username = document.querySelector("#username").value;
  var password = document.querySelector("#password").value;
  var confirmPassword = document.querySelector("#confirm-password").value;
  var email = document.querySelector("#email").value;

  // 判断密码是否一致
  if (password !== confirmPassword) {
    alert("两次输入的密码不一致,请重试!");
    return;
  }

  // 使用 AJAX 提交表单数据
  var xhr = new XMLHttpRequest();
  xhr.open("POST", "http://localhost:3000/register");
  xhr.setRequestHeader("Content-type", "application/json");
  xhr.onload = function() {
    if (xhr.status === 200) {
      alert("注册成功!");
    } else {
      alert("注册失败,请重试!");
    }
  };
  xhr.send(JSON.stringify({
    username: username,
    password: password,
    email: email
  }));
});

示例二

HTML 结构

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>QQ 注册</title>
</head>

<body>
  <!-- 注册表单 -->
  <form>
    <div>
      <label for="username">用户名:</label>
      <input type="text" id="username" placeholder="请输入用户名">
      <div id="username-tip"></div>
    </div>
    <div>
      <label for="password">密码:</label>
      <input type="password" id="password" placeholder="请输入密码">
      <div id="password-tip"></div>
    </div>
    <div>
      <label for="confirm-password">确认密码:</label>
      <input type="password" id="confirm-password" placeholder="请再次输入密码">
      <div id="confirm-password-tip"></div>
    </div>
    <div>
      <label for="email">邮箱:</label>
      <input type="text" id="email" placeholder="请输入邮箱">
      <div id="email-tip"></div>
    </div>
    <button type="submit" disabled>提交</button>
  </form>
</body>

</html>

CSS 样式

/* 全局样式 */
* {
  box-sizing: border-box;
}

body {
  font-family: "Arial", sans-serif;
}

/* 表单样式 */
form {
  margin: 20px auto;
  width: 300px;
}

label {
  display: block;
  margin-bottom: 5px;
}

input[type="text"],
input[type="password"] {
  padding: 5px;
  border: 1px solid #ccc;
  border-radius: 3px;
  outline: none;
}

button[type="submit"] {
  margin-top: 10px;
  padding: 5px 10px;
  border: none;
  border-radius: 3px;
  background-color: #4CAF50;
  color: #fff;
  cursor: pointer;
}

/* 提示信息样式 */
div[id$="-tip"] {
  font-size: 14px;
  color: #f00;
}

JavaScript 实现

// 获取表单元素和提示信息元素
var form = document.querySelector("form");
var usernameInput = document.querySelector("#username");
var passwordInput = document.querySelector("#password");
var confirmPasswordInput = document.querySelector("#confirm-password");
var emailInput = document.querySelector("#email");
var usernameTip = document.querySelector("#username-tip");
var passwordTip = document.querySelector("#password-tip");
var confirmPasswordTip = document.querySelector("#confirm-password-tip");
var emailTip = document.querySelector("#email-tip");

// 监听输入框输入事件和表单提交事件
usernameInput.addEventListener("input", checkUsername);
passwordInput.addEventListener("input", checkPassword);
confirmPasswordInput.addEventListener("input", checkConfirmPassword);
emailInput.addEventListener("input", checkEmail);
form.addEventListener("submit", function(event) {
  // 阻止表单默认提交行为
  event.preventDefault();
  // 判断是否所有输入框都已通过验证
  if (usernameInput.classList.contains("valid") &&
    passwordInput.classList.contains("valid") &&
    confirmPasswordInput.classList.contains("valid") &&
    emailInput.classList.contains("valid")) {
    // 使用 AJAX 提交表单数据
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://localhost:3000/register");
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.onload = function() {
      if (xhr.status === 200) {
        alert("注册成功!");
      } else {
        alert("注册失败,请重试!");
      }
    };
    xhr.send(JSON.stringify({
      username: usernameInput.value,
      password: passwordInput.value,
      email: emailInput.value
    }));
  } else {
    alert("表单未通过验证,请检查后重试!");
  }
});

// 检查用户名是否合法
function checkUsername() {
  var username = this.value.trim();
  if (username === "") {
    usernameInput.classList.remove("valid");
    usernameInput.classList.add("invalid");
    usernameTip.innerHTML = "用户名不能为空";
  } else if (username.length < 6 || username.length > 18) {
    usernameInput.classList.remove("valid");
    usernameInput.classList.add("invalid");
    usernameTip.innerHTML = "用户名长度必须介于6到18个字符之间";
  } else if (!/^\w+$/.test(username)) {
    usernameInput.classList.remove("valid");
    usernameInput.classList.add("invalid");
    usernameTip.innerHTML = "用户名只能由字母、数字和下划线组成";
  } else {
    usernameInput.classList.remove("invalid");
    usernameInput.classList.add("valid");
    usernameTip.innerHTML = "";
  }
  checkFormValidity();
}

// 检查密码是否合法
function checkPassword() {
  var password = this.value;
  if (password === "") {
    passwordInput.classList.remove("valid");
    passwordInput.classList.add("invalid");
    passwordTip.innerHTML = "密码不能为空";
  } else if (password.length < 8 || password.length > 20) {
    passwordInput.classList.remove("valid");
    passwordInput.classList.add("invalid");
    passwordTip.innerHTML = "密码长度必须介于8到20个字符之间";
  } else if (!/^\w+$/.test(password)) {
    passwordInput.classList.remove("valid");
    passwordInput.classList.add("invalid");
    passwordTip.innerHTML = "密码只能由字母、数字和下划线组成";
  } else {
    passwordInput.classList.remove("invalid");
    passwordInput.classList.add("valid");
    passwordTip.innerHTML = "";
  }
  checkFormValidity();
}

// 检查确认密码是否和密码一致
function checkConfirmPassword() {
  var password = passwordInput.value;
  var confirmPassword = this.value;
  if (confirmPassword === "") {
    confirmPasswordInput.classList.remove("valid");
    confirmPasswordInput.classList.add("invalid");
    confirmPasswordTip.innerHTML = "确认密码不能为空";
  } else if (password !== confirmPassword) {
    confirmPasswordInput.classList.remove("valid");
    confirmPasswordInput.classList.add("invalid");
    confirmPasswordTip.innerHTML = "两次输入的密码不一致";
  } else {
    confirmPasswordInput.classList.remove("invalid");
    confirmPasswordInput.classList.add("valid");
    confirmPasswordTip.innerHTML = "";
  }
  checkFormValidity();
}

// 检查邮箱地址是否合法
function checkEmail() {
  var email = this.value.trim();
  if (email === "") {
    emailInput.classList.remove("valid");
    emailInput.classList.add("invalid");
    emailTip.innerHTML = "邮箱不能为空";
  } else if (!/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(email)) {
    emailInput.classList.remove("valid");
    emailInput.classList.add("invalid");
    emailTip.innerHTML = "邮箱地址不合法";
  } else {
    emailInput.classList.remove("invalid");
    emailInput.classList.add("valid");
    emailTip.innerHTML = "";
  }
  checkFormValidity();
}

// 检查表单是否通过验证
function checkFormValidity() {
  if (usernameInput.classList.contains("valid") &&
    passwordInput.classList.contains("valid") &&
    confirmPasswordInput.classList.contains("valid") &&
    emailInput.classList.contains("valid")) {
    form.querySelector("button[type='submit']").disabled = false;
  } else {
    form.querySelector("button[type='submit']").disabled = true;
  }
}

至此,用 JavaScript 制作 QQ 注册动态页面的攻略就介绍完了。希望以上内容能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用javascript制作qq注册动态页面 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java 数据类型及类型转换的互相转换实例代码

    Java 是一门类型安全的编程语言,它的数据类型主要分为原始数据类型和引用数据类型两大类。其中,原始数据类型又可以分为四种整型、两种浮点型、一种字符型和一种布尔型。同时,Java 还提供了一些类型转换的工具类和语法来实现数据类型之间的转换。 一、Java 原始数据类型 Java 原始数据类型主要包括 byte、short、int、long、float、dou…

    Java 2023年5月26日
    00
  • java8时间 yyyyMMddHHmmss格式转为日期的代码

    下面是详细的攻略。 1. 确定需求 首先,我们需要明确我们的需求是将一个以yyyyMMddHHmmss格式表示的日期时间字符串转换成日期对象。 2. 寻找合适的API 根据Java8的官方文档,我们可以使用java.time.format.DateTimeFormatter类中的parse方法进行字符串解析,将字符串转换为java.time.LocalDat…

    Java 2023年5月20日
    00
  • Java制作验证码的完整实例代码

    首先需要了解什么是验证码,验证码是一种防止机器自动化操作的机制,通常用于表单提交、用户登录等场景中。Java可以通过生成随机数、加密算法等方式来制作验证码。 制作验证码的完整实例代码和步骤如下。 步骤一:引入依赖 我们使用Java的Spring框架,所以需要引入相应的依赖库,包括Spring MVC和Apache Commons Codec等。 <de…

    Java 2023年5月30日
    00
  • java xml转为json的n种方法

    Java中将XML转换为JSON的方法有很多。本文将详细介绍不同的方法及其使用方式。 方法一:使用Java相关的库 Java中有很多开源的库可用于将XML转换为JSON。其中常用的有以下几种: Jackson Jackson是一个主要用于处理JSON,但也支持XML的Java库。它提供一个简单的方法,可以将XML文件转换为JSON格式。 java Objec…

    Java 2023年5月26日
    00
  • Java实现在线预览的示例代码(openOffice实现)

    Java实现在线预览是许多Web应用程序开发中常用的技术之一。本文将讲解如何使用openOffice实现在线预览Java文档的方法。 前置条件 在开始本文之前,请确保您已经满足以下条件: 安装openOffice软件并启动该服务。 安装Java开发环境(JDK) 如果您使用的是Maven和Spring,您需要安装这些工具 实现步骤 导入依赖 如果您正在使用M…

    Java 2023年5月18日
    00
  • java加密解密示例分享

    下面是关于“java加密解密示例分享”的完整攻略。 一、背景介绍 在网络安全中,加密与解密算法是非常重要的。Java提供了很多加密与解密算法,如MD5、SHA-1、DES、AES等,本文将从这些加密算法介绍开始,分享Java加密解密的示例。不过,在使用加密解密算法的时候我们需要注意避免一些常见的错误,比如安全性的问题。 二、加密解密过程 加密解密过程可以分为…

    Java 2023年5月23日
    00
  • SpringBoot添加SSL证书的方法

    下面是“SpringBoot添加SSL证书的方法”的完整攻略,包含以下步骤和两个示例: 步骤一:生成证书 你需要使用Java Keytool来生成密钥库文件和证书,使用以下命令生成: keytool -genkey -alias mydomain -keysize 2048 -keyalg RSA -keystore keystore.jks -validi…

    Java 2023年5月20日
    00
  • java 创建自定义数组

    下面我将为您详细讲解Java创建自定义数组的完整攻略。 创建自定义数组 Java中可以通过定义一个类来自定义一个数组。定义一个数组需要完成以下步骤: 定义数组类 在数组类中定义数组元素的类型、数组长度和下标索引 实现获取、设置和遍历数组元素的方法 定义数组类 定义自定义数组类需要使用Java的面向对象编程思想。一个数组可以看做是一个对象,需要自定义一个数组类…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部