实用的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日

相关文章

  • JS字符串转GBK编码超精简实现详解

    JS字符串转GBK编码超精简实现详解 在 Javascript 中,字符串是以 Unicode 编码的。但是有些情况下,我们需要把字符串编码成其它格式,例如 GBK 编码。本文将介绍如何使用 JavaScript 将字符串转换为 GBK 编码。 1. 获取 GBK 字符编码表 GBK 字符编码表是汉字的国家标准码。我们可以从 GBK 编码表下载网站 上下载 …

    JavaScript 2023年5月20日
    00
  • Javascript 遍历对象中的子对象

    Javascript 遍历对象中的子对象通常使用递归的方式实现,具体步骤如下: 1. 判断对象是否为字典 使用 typeof 运算符判断对象类型是否为 object,进一步判断该对象是否为字典(即 {} 类型),如果不是,则直接输出当前对象: function traverseObject(obj, indentation) { if (typeof obj…

    JavaScript 2023年5月27日
    00
  • 深入理解javascript中defer的作用

    深入理解JavaScript中defer的作用 什么是defer defer是HTML5中定义的一种异步加载脚本的方法,可以让脚本文件在后台加载,不影响页面的渲染,等到页面加载完成后再执行脚本。 如何使用defer 使用defer很简单,只需要在script标签中设置defer属性即可,例如: <script defer src="examp…

    JavaScript 2023年6月10日
    00
  • javascript函数式编程程序员的工具集

    对于JavaScript函数式编程程序员,以下是一些常用的工具集合,我们将会一一讲解。 Ramda Ramda是一个功能强大且易于使用的JavaScript函数式编程库。它包含很多函数,如map,filter,compose等,以帮助你更容易地完成计算型编程任务。 下面是一个简单的示例,演示如何使用Ramda: import R from ‘ramda’; …

    JavaScript 2023年5月27日
    00
  • JavaScript日期工具类DateUtils定义与用法示例

    JavaScript日期工具类DateUtils定义与用法示例 介绍 JavaScript中提供了Date对象进行日期相关操作,但是有些常用的日期操作并没有提供相应的方法,因此可以使用自定义的DateUtils类来扩展Date对象的方法。 定义 下面是DateUtils的定义: class DateUtils { /** * 格式化日期 * @param {…

    JavaScript 2023年5月27日
    00
  • js+jquery常用知识点汇总

    js+jquery常用知识点汇总 简介 JavaScript 是一门脚本语言,主要用于网页前端开发,可使网页相关操作交互更具有动态性,而 jQuery 可以视为是对 JavaScript 的高级封装和简化,让我们能更快速地操作网页元素。在本文中,我们将讲解 JavaScript 和 jQuery 中常用的知识点并给出示例。 常用知识点 以下是 js+jque…

    JavaScript 2023年5月18日
    00
  • JavaScript event对象整理及详细介绍

    下面是关于“JavaScript event对象整理及详细介绍”的完整攻略,帮助大家深入了解并灵活应用事件对象。 JavaScript event对象整理及详细介绍 1. 什么是事件对象? 在 JavaScript 中,当事件发生时,浏览器会创建一个事件对象(Event Object),用于保存事件相关的信息。 事件对象包含了导致事件被触发的元素信息、鼠标信…

    JavaScript 2023年5月27日
    00
  • 教你如何在 Javascript 文件里使用 .Net MVC Razor 语法

    接下来我将详细讲解“教你如何在 Javascript 文件里使用 .Net MVC Razor 语法”的完整攻略。 什么是 .Net MVC Razor 语法 Razor 语法是 ASP.NET MVC 3 及其更高版本中引入的一种标记语言,它不仅可以被用于模板引擎,还可以用于编写控制器中的 C# 代码。 Razor 语法结合了 C# 代码与 HTML 标记…

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