实用的JS表单验证提示效果

要实现“实用的JS表单验证提示效果”,我们需要以下步骤:

1. 编写HTML代码

我们需要为表单元素添加id或class属性,以便我们可以使用JavaScript代码对其进行操作。

<form id="myForm">
  <label for="username">用户名:</label>
  <input type="text" id="username" name="username" required="required"><br>

  <label for="password">密  码:</label>
  <input type="password" id="password" name="password" required="required"><br>

  <button type="submit">提交</button>
</form>

2. 编写CSS代码

我们需要为提示框和表单元素添加样式。

/* 表单输入框样式 */
input{
  width: 200px;
  height: 30px;
  padding: 5px 10px;
  margin-bottom: 10px;
  border-radius: 5px;
  border: 1px solid #ccc;
}

/* 必填表单元素样式 */
input:required{
  border-color: #f00;
}

/* 提示框样式 */
.error{
  display: none;
  color: #f00;
  font-size: 14px;
}

3. 编写JavaScript代码

我们使用JavaScript代码来验证用户输入,并对用户错误提示。

// 获取表单元素
var myForm = document.getElementById("myForm");
var username = document.getElementById("username");
var password = document.getElementById("password");

// 给表单元素添加验证事件
myForm.addEventListener("submit",function(event){
  // 阻止表单默认提交行为,这样我们可以处理表单的验证
  event.preventDefault();

  // 验证用户名不能为空
  if(username.value == ""){
    showError(username,"用户名不能为空");
  }else{
    showSuccess(username);
  }

  // 验证密码不能为空
  if(password.value == ""){
    showError(password,"密码不能为空");
  }else{
    showSuccess(password);
  }

  // 如果所有表单元素都通过验证,则提交表单
  if(checkAll()){
    myForm.submit();
  }
});

// 验证表单元素是否通过验证
function checkAll(){
  // 获取所有表单元素
  var inputs = myForm.querySelectorAll("input");

  // 验证每一个表单元素是否通过验证
  for(var i = 0; i < inputs.length; i++){
    // 如果表单元素没有通过验证,则返回false
    if(inputs[i].parentNode.classList.contains("error")){
      return false;
    }
  }

  // 如果所有表单元素都通过验证,则返回true
  return true;
}

// 显示错误提示
function showError(input,message){
  // 获取表单元素的父级元素
  var parent = input.parentNode;

  // 添加错误提示样式
  parent.classList.add("error");

  // 显示错误提示框
  var error = parent.querySelector(".error");

  error.innerHTML = message;
  error.style.display = "block";
}

// 显示成功提示
function showSuccess(input){
  // 获取表单元素的父级元素
  var parent = input.parentNode;

  // 移除错误提示样式
  parent.classList.remove("error");

  // 隐藏错误提示框
  var error = parent.querySelector(".error");

  error.innerHTML = "";
  error.style.display = "none";
}

示例说明

示例1

假设我们要验证“年龄”表单元素是否大于18,如果小于或等于18,则提示“年龄必须大于18”。

<form id="myForm2">
  <label for="age">年龄:</label>
  <input type="number" id="age" name="age" required="required"><br>

  <button type="submit">提交</button>
</form>
// 获取表单元素
var myForm2 = document.getElementById("myForm2");
var age = document.getElementById("age");

// 给表单元素添加验证事件
myForm2.addEventListener("submit",function(event){
  // 阻止表单默认提交行为,这样我们可以处理表单的验证
  event.preventDefault();

  // 验证年龄是否大于18
  if(age.value <= 18){
    showError(age,"年龄必须大于18");
  }else{
    showSuccess(age);
  }

  // 如果所有表单元素都通过验证,则提交表单
  if(checkAll()){
    myForm2.submit();
  }
});

示例2

我们可以为必填表单元素添加data-rule属性,来设置自定义验证规则。

<form id="myForm3">
  <label for="email">邮箱:</label>
  <input type="email" id="email" name="email" required="required" data-rule="^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$" ><br>

  <button type="submit">提交</button>
</form>
// 获取表单元素
var myForm3 = document.getElementById("myForm3");
var email = document.getElementById("email");

// 给表单元素添加验证事件
myForm3.addEventListener("submit",function(event){
  // 阻止表单默认提交行为,这样我们可以处理表单的验证
  event.preventDefault();

  // 获取自定义验证规则
  var rule = email.getAttribute("data-rule");

  // 如果没有自定义验证规则,则跳过验证
  if(!rule) return;

  // 构造正则表达式
  var regex = new RegExp(rule);

  // 验证邮箱地址是否符合规则
  if(!regex.test(email.value)){
    showError(email,"邮箱格式不正确");
  }else{
    showSuccess(email);
  }

  // 如果所有表单元素都通过验证,则提交表单
  if(checkAll()){
    myForm3.submit();
  }
});

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:实用的JS表单验证提示效果 - Python技术站

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

相关文章

  • 解析JavaScript中的不可见数据类型

    首先我们需要了解JavaScript中的不可见数据类型。 JavaScript中有七种数据类型:Undefined、Null、Boolean、Number、String、Object和Symbol(ES6新增)。其中Undefined和Null可以称为“空数据类型”,因为它们只有一个值:undefined和null。但是这两个值在JavaScript的底层实…

    JavaScript 2023年6月10日
    00
  • js原生Ajax的封装和原理详解

    下面是关于”js原生Ajax的封装和原理详解”的完整攻略: 什么是Ajax Ajax是指异步JavaScript和XML(Asynchronous Javascript and XML)技术,主要用于异步加载数据,是一种无需重新加载整个网页的情况下,能够更新部分网页的技术。 使用Ajax技术,通过XMLHttpRequest对象向服务器发送请求,并进行异步通…

    JavaScript 2023年6月11日
    00
  • asp.net 实现下拉框只读功能

    当我们在 ASP.NET 中使用下拉框时,有时希望该下拉框在不禁用的情况下变为只读状态,这意味着用户仍然可以查看下拉框内容,但不能更改内容。以下是 ASP.NET 实现下拉框只读功能的攻略: 步骤一:使用 ASP.NET 的 DropDownList 控件 要实现下拉框的只读功能,需要在 ASP.NET 中使用 DropDownList 控件。我们可以在 .…

    JavaScript 2023年6月11日
    00
  • 仿豆瓣分页原型(Javascript版)

    让我们一步步来详细讲解“仿豆瓣分页原型(Javascript版)”的完整攻略。 1. 目标 在这个项目中,我们的目标是完成一个可以实现类似豆瓣电影列表分页的原型,包含如下功能: 页面展示电影列表 实现分页功能,可以翻页查看电影列表的不同页面 支持自定义每页显示的电影数量 2. 环境 完成这个项目我们需要一个web开发环境,下面列出了需要的工具和技术: HTM…

    JavaScript 2023年6月11日
    00
  • JS记录用户登录次数实现代码

    下面是“JS记录用户登录次数实现代码”的完整攻略,包含两条示例说明。 一、需求描述 我们的网站需要记录每个用户登录的次数,并在页面上展示出来。为了实现这个功能,我们需要使用JavaScript编写代码来记录用户的登录次数,并在网页上显示。 二、步骤分解 1. 定义变量 我们首先需要定义一个变量来保存用户的登录次数。我们可以将这个变量保存在localStora…

    JavaScript 2023年6月11日
    00
  • AngularJs E2E Testing 详解

    AngularJs E2E Testing 详解 在开发应用程序的过程中,我们需要确保这些程序在部署后正常运行。为了验证这些应用程序的功能,我们需要进行端到端 (End to End, E2E) 测试。 E2E 测试是一个自动化的过程,通过验证应用程序的模拟场景来模仿真实用户的行为。通过这种方式我们可以测试到所有层级,包括用户界面、功能、维护性、性能等。An…

    JavaScript 2023年6月10日
    00
  • JavaScript对象、属性、事件手册集合方便查询

    JavaScript对象、属性、事件手册集合方便查询攻略 1. 前言 JavaScript作为前端必学的语言之一,其包含了许多重要的概念,如对象、属性、事件等。这些概念在日常的Web开发中被广泛应用。在学习过程中,时常会遇到需要查询某个对象、属性、事件的情况。为了解决这个问题,我们可以使用一些工具和手册来方便地获取所需信息。 在本攻略中,我们将介绍几个使用J…

    JavaScript 2023年5月18日
    00
  • js生成缩略图后上传并利用canvas重绘

    JS生成缩略图并上传,可以分成以下几步进行: 选择图片:通过input[type=file]标签或者拖拽上传等方式进行选择图片。 根据图片宽高比例计算生成缩略图的宽高:设定缩略图的最大宽高和图片的原始宽高,通过比例计算出缩略图应该生成的宽高,以确保缩略图不会变形。 利用canvas生成缩略图:将原始图片绘制在canvas中,设置canvas的宽高为缩略图宽高…

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