实用的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 asp教程第十二课—session对象

    让我们来详细讲解“javascript asp教程第十二课—session对象”的完整攻略。 什么是Session对象? Session对象是ASP中一种非常重要的对象,它可以用来存储和检索用户会话数据。每个用户在使用Web应用程序时,都会有一个独立的Session对象与之对应,用于存储该用户的数据。Session对象可以存储任何类型的数据,比如整数、字…

    JavaScript 2023年6月11日
    00
  • 简单了解Ajax表单序列化的实现方法

    下面是“简单了解Ajax表单序列化的实现方法”的完整攻略。 一、什么是Ajax表单序列化? Ajax表单序列化是AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)技术中的一种常见用法,它可以将表单中的数据自动转换成一组用于HTTP POST请求或GET请求的字符串。这个字符串可以被传递到服务器端,用于…

    JavaScript 2023年5月19日
    00
  • 使用Chrome浏览器调试AngularJS应用的方法

    使用Chrome浏览器调试AngularJS应用的方法 AngularJS是一种流行的JavaScript框架,它是一种用于单页面应用程序(SPA)的框架。使用Chrome浏览器调试AngularJS应用程序是一项必需的技能,下面是详细说明: 步骤1:启用Debug模式 将ng-app指令添加到AngularJS应用程序的HTML标记时,请确保正确设置了de…

    JavaScript 2023年6月11日
    00
  • JS正则表达式比较常见用法

    接下来我来为大家详细讲解JS正则表达式比较常见用法的完整攻略。 什么是正则表达式? 正则表达式是一种在字符串中匹配模式的方式。在JS编程中,我们可以使用正则表达式来实现字符串的搜索、替换以及分隔等操作。JS中的正则表达式都是一个对象,我们可以通过RegExp类来创建。 如何创建正则表达式 有两种方式创建正则表达式,分别为使用字面量和使用构造函数: 使用字面量…

    JavaScript 2023年6月11日
    00
  • JS日历 推荐

    作为网站的作者,我非常乐意为大家介绍“JS日历 推荐”这个主题的完整攻略。在本文中,我将详细讲述该主题的使用方式、配置参数以及常见问题解决方案,并且提供两条示例说明,帮助大家更好地理解和掌握该主题的应用方法。 一、 使用方式 下载并引入日历组件库 <script src="https://cdn.jsdelivr.net/npm/pikada…

    JavaScript 2023年5月27日
    00
  • JavaScript与ActionScript3两者的同性与差异性

    JavaScript和ActionScript3都是基于ECMAScript语法的编程语言,它们有一些共同的特性,但也有很多不同之处。 1. 相同点 1.1 语法基础 JavaScript和ActionScript3都是基于ECMAScript语法的编程语言,两种语言拥有类似的语法、数据类型、变量、运算符和控制结构等基本组成部分。 1.2 可以浏览器和跨平台…

    JavaScript 2023年5月27日
    00
  • js实现iGoogleDivDrag模块拖动层拖动特效的方法

    JS实现iGoogleDivDrag模块拖动层拖动特效是一项基于鼠标拖动功能的JavaScript特效。下面是实现该特效的攻略: 1. 添加HTML结构 首先,在HTML中添加需要拖拽的div元素,同时为目标div元素指定ID属性,例如: <div id="dragElement">需要拖拽的内容区域</div> …

    JavaScript 2023年6月11日
    00
  • javascript 的Document属性和方法集合

    来讲解一下“javascript 的Document属性和方法集合”的完整攻略。 1. Document属性 1.1 title属性 title属性用于获取或修改HTML文档的标题。例如: // 查看当前文档标题 console.log(document.title); // 修改当前文档标题 document.title = "新标题"…

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