css3 invalid实现表单校验

最近接到一个需求迭代,要对之前纯html静态官网页面中的表单进行类似于antd或者elementui的校验,该项目主要使用jquery开发,刚做这个的时候,第一个想法是通过js对表单onvalid事件进行监听,然后控制dom的显示隐藏,虽然还是简单,但开发起来还是需要一定工作量的,(特别是操作dom这东西)。后面通过百度一波,发现可以通过标签上的required和结合css3的伪类valid和invalid就能实现校验,瞬间心里蹦跶蹦跶的开心起来,帮我省了好多开发步骤,哈哈哈。

话不多说,首先,我们先简单了解下valid和invalid

1、:valid 用于匹配输入值为是否合法
2、:invalid 用于匹配输入值是否为非法
3、required 属性规定必需在提交之前填写输入字段
4、pattern 属性规定用于验证输入字段的正则表达式

废话不多说了 直接看效果,上代码

 

 

 

 

<form>
    <div class="form">
         <span>*</span>
         <input type="text" placeholder="你的姓名" name="name" required >
         <p class="error-text">请填写你的姓名</p>
    </div>
    <div class="form">
         <span>*</span>
         <select placeholder="选择在投产品类型" name="productType" required >
             <option style="display: none;" value="">选择类型</option>
             <option value="电商">电商</option>
             <option value="小说">小说</option>
         </select>
         <p class="error-text">请选择类型</p>
    </div>
    <div class="form">
         <button type="submit">提交</button>
    </div>
</form>

 

.form input:valid~.error-text,
.form select:valid~.error-text {
  display: none;
}

.form input:invalid:required~.error-text,
.form select:invalid:required~.error-text {
  display: none;
}


.form input:focus:invalid,
.form select:focus:invalid {
  border: 1px solid #f5222d;
}

.form input:focus:invalid~.error-text,
.form select:focus:invalid~.error-text {
  display: block;
}

 

posted @ 2021-11-10 22:57  不会飞的木木夕  阅读(144)  评论(0编辑  收藏  举报