文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

纯CSS怎样实现表单验证

2023-06-08 07:43

关注

这篇文章将为大家详细讲解有关纯CSS怎样实现表单验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在我们的日常业务中,表单验证是个很常见设计需求,像一些登录注册框,问卷调查也都需要用到表单验证。

一般我们的实现思路都是JS监听input框的输入内容,判断用户输入内容,从而以此来决定下一步的操作。

例如这样:(以下例子来自优秀的开源UI库,element)

<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>

以上就是我们常规的表达验证了,基本就都是用JS来完成的,那么我们能不能用CSS来实现呢?答案是可以的。这里先上DEMO

CSS实现表单验证

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

这里是全部代码

 :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; }  <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>

效果截图

纯CSS怎样实现表单验证 

纯CSS怎样实现表单验证 

使用到的知识点

HTML5<input> 的新属性: pattern

MDN的解释:

检查控件值的正则表达式.。pattern必须匹配整个值,而不仅仅是某些子集.。使用title属性来描述帮助用户的模式.。当类型属性的值为text, search, tel, url 或 email时,此属性适用,否则将被忽略。(兼容ie10+)

备注:

如果 pattern 里的验证规则不合法,例如多了长度校验内多了空格,也是会在控制台报错的,详情如下:

纯CSS怎样实现表单验证

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

CSSJS 里的验证规则不一样,以下写法是会无效的,核心校验规则需要用 [] 包起来(目前从测试的几个例子是这样,具体详情还需要翻查资料,如果有大佬知道更具体的信息,请告知,谢谢!)

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

CSS Level 4 选择器 的新属性: invalid

关于“纯CSS怎样实现表单验证”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯