分享纯手写漂亮的表单验证

yizhihongxing

下面是关于如何分享纯手写漂亮的表单验证的完整攻略:

1. 为什么需要表单验证

在网站开发中,表单是非常重要的交互方式之一。表单用于收集和提交用户的数据,因此表单验证是非常必要的。表单验证可以确保用户输入的数据满足我们的需求,比如确保用户的邮箱格式正确、密码符合规范等。如果没有表单验证,那么用户可能会输入错误或者恶意的数据,造成网站数据的被破坏,或者影响用户使用体验。

2. 纯手写表单验证的优点

虽然市面上有很多表单验证插件,但是纯手写表单验证也有很多优点:

  • 学习成本低:基于一些基础知识,只需要了解相关代码就可以手写表单验证了,很多时候不需要使用复杂的插件;
  • 更加定制化:手写表单验证可以更加灵活方便的根据需求进行修改和扩展而不需要受限于插件的功能;
  • 代码质量更高:手写表单验证可以让代码更加简洁和高效,并且可以减少不必要的依赖,并保证代码质量高和执行效率。

3. 表单验证的实现方式

表单验证可以通过多个方式来进行实现。以下是两个非常常用的方法:

3.1 使用HTML5的表单验证

HTML5提供了一些表单验证的属性和API,可以直接使用来进行表单验证。比如可以使用required属性来规定输入框必须被填写,使用type="email"属性来验证用户是否输入了正确的邮箱地址。以下是一个使用HTML5表单验证的示例:

<form action="submit.php" method="post">
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" required>

    <label for="password">Password:</label>
    <input type="password" id="password" name="password" pattern=".{8,}" title="Must contain at least 8 characters" required>

    <button type="submit">Submit</button>
</form>

在上述示例中,required属性规定了输入框必须填写,并且如果用户未填写会出现提示。type="email"属性则用来验证用户输入的是否是正确格式的邮箱地址。

3.2 使用JavaScript手写表单验证

除了使用HTML5,我们也可以通过手写JavaScript代码来进行表单验证。以下是一个使用JavaScript手写表单验证的示例:

<form action="submit.php" method="post">
    <label for="email">Email:</label>
    <input type="email" id="email" name="email">
    <span id="email-error" class="error"></span>

    <label for="password">Password:</label>
    <input type="password" id="password" name="password">
    <span id="password-error" class="error"></span>

    <button type="submit">Submit</button>
</form>
var form = document.querySelector('form');
var email = document.querySelector('#email');
var emailError = document.querySelector('#email-error');
var password = document.querySelector('#password');
var passwordError = document.querySelector('#password-error');

form.addEventListener('submit', function(e) {
  if (email.validity.valid && password.validity.valid) {
    // 表单验证通过,可以提交表单
  } else {
    e.preventDefault();
    if (!email.validity.valid) {
      emailError.textContent = '请输入正确的邮箱地址';
    }
    if (!password.validity.valid) {
      passwordError.textContent = '请输入至少8位密码';
    }
  }
});

email.addEventListener('input', function(e) {
  if (email.validity.valid) {
    emailError.textContent = '';
  } else {
    emailError.textContent = '请输入正确的邮箱地址';
  }
});

password.addEventListener('input', function(e) {
  if (password.validity.valid) {
    passwordError.textContent = '';
  } else {
    passwordError.textContent = '请输入至少8位密码';
  }
});

在上述示例中,我们通过监听表单submit事件来检验表单输入是否符合要求。如果符合要求,则可以提交表单;如果不符合要求,则阻止表单提交,并在错误的输入框下方显示错误提示。同时,我们还通过监听input事件来即时检测用户的输入是否符合要求。

4. 表单验证的优化

  • 及时的反馈(UI效果):采用视觉效果表明是否通过验证,即时的反馈对体验来说很重要。

  • 简单的操作:客户不想要太多打字或操作,所有都更好都自动化甚至所有都使用下拉框和单选按钮更好,如果必须要使用输入框,也建议内置联想功能,客户就不必输很多字。

  • 尽量避免复杂的验证规则:虽然开发人员可以依据各种特定规则进行验证,但是用户无法预料这些特定规则,而且在遇到一定的信任度危机时也无法接受,因此建议只使用通用的规则对用户进行验证并区分出错误。

  • 帮助他们改正错误:在验证发现用户有错误时,尽可能情况下把错误原因告诉用户,并提供改正的方案,给他们一种易于接受的方式改正错误。

  • 短语化的指引:使表单或验证指引直接简短而重点突出,不要把表单和指引进行过多而复杂的表述。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:分享纯手写漂亮的表单验证 - Python技术站

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

相关文章

  • JavaScript流程控制(循环)

    JavaScript流程控制(循环) JavaScript提供了循环结构来重复执行代码块,为开发者处理重复性任务提供了方便。 在JavaScript中,有三种循环结构:for、while和do…while。在使用这些结构之前需要确定循环的条件,即循环的终止条件。只有当终止条件为false时,循环才会停止。 1. for循环 for循环是JavaScrip…

    JavaScript 2023年5月27日
    00
  • JavaScript 原型继承

    JavaScript 原型继承 JavaScript 原型继承是一种非常重要的概念,相较于传统的面向对象语言中的继承,JavaScript 通过原型继承来实现对象之间的属性和方法的共享,它是 JavaScript 中最为灵活的一种继承方式。 定义 JavaScript 中的每个对象(除了 null)都有一个原型对象,原型对象可以通过 Object.getPr…

    JavaScript 2023年6月10日
    00
  • JavaScript 类的封装操作示例详解

    JavaScript类的封装操作示例详解 类是现代 JavaScript 开发中最常见的封装形式之一,通过类的封装可以将相关代码组织在一起,实现更好的封装和抽象。本篇攻略将介绍 JavaScript 类的封装操作,并提供两个示例供参考。 定义一个类 定义一个类的基础语法与 C++、Java 等语言类似,通过 class 关键字加上类的名称定义一个类,类的主体…

    JavaScript 2023年6月10日
    00
  • react-router-dom v6 使用详细示例

    这里给出使用 React-Router-Dom 版本 6.x 的详细攻略,包含基本概念、用法介绍、代码示例等,方便大家快速上手。 基本概念 React-Router-Dom 是一个 React 的声明式路由库,在 React 应用中使用路由的时候非常方便。在使用 React-Router-Dom 时,主要涉及到以下几个核心概念: Router:定义路由的容器…

    JavaScript 2023年6月11日
    00
  • c#与js随机数生成方法

    生成随机数是编程中常见的需求,C#和JS都提供了相关的API来生成随机数。下面我将为你详细讲解C#和JS生成随机数的方法,并提供两个示例来说明如何生成随机数。 C#生成随机数 使用System.Random类 C#中可以使用System.Random类生成随机数,Random类中提供了Next()方法可以生成指定范围内的随机数。示例代码如下: Random …

    JavaScript 2023年5月28日
    00
  • js事件冒泡、事件捕获和阻止默认事件详解

    JS事件冒泡、事件捕获和阻止默认事件 事件冒泡 事件冒泡是指当一个元素触发了某个事件时,该事件会从子元素一直冒泡到祖先元素。例如,当一个按钮被点击时,点击事件会首先被触发,然后该事件会向外冒泡,一直到文档根节点才停止。 事件捕获 事件捕获是指当一个元素触发了某个事件时,该事件会从祖先元素一直捕获到子元素。例如,当一个按钮被点击时,点击事件会从文档根节点开始捕…

    JavaScript 2023年6月10日
    00
  • 在JS中如何判断两个对象是否相等

    在JavaScript中,判断两个对象是否相等有多种方法,取决于你对 相等 的定义以及对象属性的类型。以下是几种常见的方法:   1. 严格相等运算符 (===) 使用 === 运算符可以比较两个对象是否引用同一个对象。如果两个变量引用了同一个对象,则它们是相等的,否则它们是不相等的。例如: const obj1 = { a: 1 }; const obj2…

    JavaScript 2023年5月8日
    00
  • JS判断数组是否包含某元素实现方法汇总

    首先,判断数组是否包含某一元素是JavaScript中非常基本的操作之一。在这里我们将介绍几种实现方法并提供示例说明。 1. 方法一:使用indexOf函数 使用indexOf函数是判断数组是否包含某元素的简便方法之一。该函数会返回元素在数组中的下标,如果元素不在数组中则返回-1。因此只需判断indexOf函数的返回值是否为-1即可得知元素是否在数组中。 下…

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