css实现表单验证

2023-11-15

在我们的日常业务中,表单验证是个很常见设计需求,像一些登录注册框,问卷调查也都需要用到表单验证。
一般我们的实现思路都是JS监听input框的输入内容,判断用户输入内容,从而以此来决定下一步的操作。

<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px" class="demo-ruleForm">
  <el-form-item
    label="年龄"
    prop="age"
    :rules="[
      { required: true, message: '年龄不能为空'},
      { type: 'number', message: '年龄必须为数字值'}
    ]"
  >
    <el-input type="age" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('numberValidateForm')">提交</el-button>
    <el-button @click="resetForm('numberValidateForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        numberValidateForm: {
          age: ''
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

CSS实现表单验证
上面的表单验证就完全是由CSS来实现的,核心属性就是CSS Level 4的Validity。思路就是利用**:valid跟:invalid**可以对的value进行判断的特性。

/*
 * css
 */
 :root {
 	--error-color: red;
 }
 .form > input {
 	margin-bottom: 10px;
 }
 .form > .f-tips {
 	color: var(--error-color);
 	display: none;
 }
 input[type="text"]:invalid ~ input[type="submit"],
 input[type="password"]:invalid ~ input[type="submit"] {
 	display: none;
 }
 input[required]:invalid + span {
 	display: inline;
 }
 
 /*
  * html
  */
<form class="form" id="form" method="get" action="/api/form">
    账号:
    <input data-title="账号" pattern="[\w]{6,10}" name="account" type="text" required />
    <span class="f-tips">请输入正确的账号</span>
    <br />
    密码:
    <input data-title="密码" pattern="[\w]{6,10}" name="password" type="password" required />
    <span class="f-tips">请输入正确的密码</span>
    <br />
    <input name="button" type="submit" value="提交" />
</form>

效果截图
在这里插入图片描述在这里插入图片描述
使用到的知识点

  1. HTML5里的新属性:pattern

备注:

1.如果pattern里的验证规则不合法,例如多了长度校验内多了空格,也是会在控制台报错的,详情如下:
在这里插入图片描述

<input data-title="账号" pattern="/[\w]{6, 10}/" name="account" type="text" required />

2.CSS与JS里的验证规则不一样,以下写法是会无效的,核心校验规则需要用[]包起来

<input data-title="账号" pattern="/\w{6,10}/" name="account" type="text" required />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css实现表单验证 的相关文章

随机推荐

  • 【理论实践】指向类模板函数的指针的使用(以std::list为例)

    假设有这个一个场景 我们希望根据条件决定插入元素到list首或尾 条件判断一次 插入操作多次 例如二叉树 至少要处理左和右各一次 普通的代码很简单 每次操作时 都判断一下 简化一下是一个三元表达式 巧妙一点的 可以定义一个变量指定接口函数
  • QT学习笔记:多线程操作

    做了一个demo展示两种形式的多线程操作 第二种常用 new QThread Class Override run new Object Class moveToThread new QThread threadfirst h 第一种形式的
  • Js Jquery 关于endWith() 和startWith() 的使用

    javascript中字符串处理并没有 StartWith 和 EndWith 这俩个方法 这里说的是手动构建这俩个方法 JQuery 也是没有这俩个方法的 而是利用其丰富的选择器来达到此效果 首选javascript下着俩个函数的构建如下
  • RFC7296--Internet密钥交换协议版本2(IKEv2)

    2 8 密钥更新 rekeying IKE ESP和AH安全联盟 SA 使用的共享密钥应该只在有限的时间里保护优先的数据 这限制了整个SA的生存周期 生存周期超时的SA决不能再使用 如果有需要 可以建立新的SA 重建SA以取代过期的SA被称
  • Python 文件操作(IO)

    文章目录 前言 一 打印到屏幕 print 二 读取键盘输入 1 raw input 2 input 三 读写文件 读文件 写文件 前言 和其它编程语言一样 Python 也具有操作文件 I O 的能力 比如打开文件 读取和追加数据 插入和
  • 什么是token?

    什么是token token就是令牌 前后端进行鉴权的一种有效形式 比传统的 session 鉴权更加方便 简单来说 当用户首次登陆时 网站会给你一张 门卡 以后你可以凭借门卡直接进入 而无需再次申请 但一段时间之后门卡实效 你需要再到前台
  • 如何调用本业务模块外的服务——服务调用

    上篇已经引入 Nacos 基础组件 完成了服务注册与发现机制 可以将所有服务统一的管理配置起来 方便服务间调用 本篇将结合需求点 进行服务间调用 完成功能开发 几种服务调用方式 服务间调用常见的两种方式 RPC 与 HTTP RPC 全称
  • 一个简洁的PNG ICO转换工具 支持多分辨率的ICO生成

    一个绝美的PNG ICO转换工具 支持多分辨率的ICO生成 下载地址 http www ppsbbs tech thread 58 htm
  • Kotlin 1.2 新特性

    点击关注异步图书 置顶公众号 每天与你分享IT好书 技术干货 职场知识 在Kotlin 1 1中 团队正式发布了JavaScript目标 允许开发者将Kotlin代码编译为JS并在浏览器中运行 在Kotlin 1 2中 团队增加了在JVM和
  • Intellij Idea怎么撤销,反撤销

    Intellij IDEA中 1 Ctrl z是撤销快捷键 2 反撤销快捷键为 Ctrl Shift Z
  • React 配置路由

    1 在 index 中引入 App 文件 index 是入口文件 并且在 index 中引入样式文件等等 把 App 挂载到 DOM 元素上 2 在 App 组件中
  • 3 亿岗位将被 AI 取代?巴比特深度采访业界后,“失业潮”真相有些出人意料……...

    图片来源 由无界 AI工具生成 人工智能技术的发展正迎来奇点 尤其是今年以来 ChatGPT 和 AIGC 的迅猛势头让无数人猝不及防 真真切切地对各行各业现有的工作岗位产生冲击 近日 蓝色光标全面停止创意设计 方案撰写 文案撰写 短期雇员
  • (简单成功版本)Mysql配置my.ini文件

    目录 一 背景 二 删除原有的mysql服务 三 初始化mysql 四 自行添加my ini文件 五 新建mysql服务 六 启动mysql服务 七 设置数据库密码 7 1 登录mysql数据库 7 2 修改root用户密码 八 配置my
  • Xcode编译报错不提示

    M1 Xcode Version 12 5 1 12E507 编译项目之后提示 Build Failed 但是并不报 小红点 不指示是哪个文件报错 不知道去哪里找报错文件了 Xocode 工具栏上有这个按钮 选择之后点击某次编译 如果有错误
  • DOTA目标检测数据集

    Dota开源目标检测数据集 DOTA v1 5包含16个类别中的40万个带注释的对象实例 这是DOTA v1 0的更新版本 它们都使用相同的航拍图像 但是DOTA v1 5修改并更新了对象的注释 其中许多在DOTA v1 0中丢失的10像素
  • 拷贝构造函数的调用方式以及相关问题【最清晰易懂】

    这几天一直有一个问题在我大脑里挥之不去 之前面试实习的时候也被问过 但是回答的不好 面试官问 你知道的构造函数有哪些 我说 无参构造函数 有参构造函数 拷贝构造函数 移动构造函数 关于一些函数的说明 面试官说 其实拷贝构造函数 移动构造函数
  • java给字符串数组追加字符串_java往字符串数组追加新数据

    public class Test public static void main String args 原字符串数组 String arr 原字符串数据1 原字符串数据2 执行数据添加 arr insert arr 需要追加的字符串数据
  • win11安装mysql5.7带安装包与常见问题如重装,初次登录不上,跳不了密码等

    目录 1下载 2安装 注意1 你的新建只有文件夹而且需要权限 注意2报错The service already existsThe current server installed 3初次登录与密码 注意3密码是只能输入进去的 4设置密码与
  • OpenCV总结3——图像拼接Stitching

    之前折腾过一段时间配准发现自己写的一点都不准 最近需要进行图像的拼接 偶然的机会查到了opencv原来有拼接的库 发现opencv处理配准之外还做了许多的操作 就这个机会查找了相关的资料 同时也研究了以下他的源代码 做一个简单的总结 Sti
  • css实现表单验证

    在我们的日常业务中 表单验证是个很常见设计需求 像一些登录注册框 问卷调查也都需要用到表单验证 一般我们的实现思路都是JS监听input框的输入内容 判断用户输入内容 从而以此来决定下一步的操作