资讯专栏INFORMATION COLUMN

纯CSS实现表单验证

galaxy_robot / 3466人阅读

摘要:作者陈大鱼头关于表单验证在我们的日常业务中,表单验证是个很常见设计需求,像一些登录注册框,问卷调查也都需要用到表单验证。这里先上实现表单验证上面的表单验证就完全是由来实现的,核心属性就是的。


作者:陈大鱼头

github: KRISACHAN

关于表单验证

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

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

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

"numberValidateForm" ref="numberValidateForm" label-width="100px" class="demo-ruleForm">
  "年龄"
    prop="age"
    :rules="[
      { required: true, message: "年龄不能为空"},
      { type: "number", message: "年龄必须为数字值"}
    ]"
  >
    type="age" v-model.number="numberValidateForm.age" autocomplete="off">
  
  
    type="primary" @click="submitForm("numberValidateForm")">提交
    "resetForm("numberValidateForm")">重置
  


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

CSS实现表单验证

上面的表单验证就完全是由CSS来实现的,核心属性就是CSS Level 4Validity。思路就是利用: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

MDN的解释:

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

备注:

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

"账号" pattern="/[w]{6, 10}/" name="account" type="text" required />

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

"账号" pattern="/w{6,10}/" name="account" type="text" required />

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

详细介绍请看我的博文[译]19个CSS level 4 选择器



如果你、喜欢探讨技术,或者对本文有任何的意见或建议,你可以扫描下方二维码,关注微信公众号“鱼头的Web海洋”,随时与鱼头互动。欢迎!衷心希望可以遇见你。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/6945.html

相关文章

  • CSS实现表单验证

    摘要:作者陈大鱼头关于表单验证在我们的日常业务中,表单验证是个很常见设计需求,像一些登录注册框,问卷调查也都需要用到表单验证。这里先上实现表单验证上面的表单验证就完全是由来实现的,核心属性就是的。 作者:陈大鱼头 github: KRISACHAN 关于表单验证 在我们的日常业务中,表单验证是个很常见设计需求,像一些登录注册框,问卷调查也都需要用到表单验证。 一般我们的实现思路都是JS监听i...

    番茄西红柿 评论0 收藏0
  • CSS实现表单验证

    摘要:例如这样以下例子来自优秀的开源库,年龄年龄不能为空年龄必须为数字值提交重置以上就是我们常规的表达验证了,基本就都是用来完成的,那么我们能不能用来实现呢答案是可以的。 作者:陈大鱼头 github: KRISACHAN 关于表单验证 在我们的日常业务中,表单验证是个很常见设计需求,像一些登录注册框,问卷调查也都需要用到表单验证。 一般我们的实现思路都是JS监听input框的输入内容...

    sf_wangchong 评论0 收藏0
  • HTML知识梳理(笔记)

    摘要:标签位于文档的头部,不包含任何内容。这其中包括标签中的。参考链接默认样式问题处理浏览器的默认样式。让浏览器知道元素的合法性。属于,是进行严格化的结果。机器容易理解结构搜索读屏软件有助于优化。是中的,是可以通过进行更改的,是活的。 HTML常见元素 showImg(https://segmentfault.com/img/bVbdnq2?w=861&h=365); meta 定义和用法 ...

    amc 评论0 收藏0
  • 转:CSS :placeholder-shown伪类实现Material Design占位符交互效果

    摘要:转自伪类实现占位符交互效果一规范中占位符交互效果风格占位符交互效果官方示意见此页面。我们可以采用绝对定位最后,对这个元素在输入框时候,以及非显示的时候进行重定位缩小并位移到上方四清除按钮部分上是必要属性,配合伪类实现我们的效果。 转自: https://github.com/yougola/bl... CSS :placeholder-shown伪类实现Material Design占...

    gaara 评论0 收藏0
  • javascript功能插件大集合 前端常用插件 js常用插件

    摘要:转载来源包管理器管理着库,并提供读取和打包它们的工具。能构建更好应用的客户端包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。很棒的组件集合。隐秘地使用和用户数据。 转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具。•npm – npm 是 javasc...

    netmou 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<