Bootstrap表单验证样式不生效是怎么回事?
我按照文档给表单加了needs-validation类,也写了novalidate属性,但提交时还是走浏览器默认验证,Bootstrap的红色边框和提示完全没出现。
是不是还要额外引入什么JS?我只用了bootstrap.min.css,没加bootstrap.bundle.js,会不会是这个原因?
<form class="needs-validation" novalidate>
<input type="text" class="form-control" required>
<div class="invalid-feedback">请输入内容</div>
</form>
光有CSS是不够的,因为
novalidate只是禁用了浏览器原生的验证提示,但Bootstrap的红色边框和错误信息显示,需要JS在提交时动态给表单加上was-validated类,或者手动给输入框加is-invalid类。解决办法有两个。
第一个,直接引入Bootstrap的JS文件,把
bootstrap.bundle.js加上就行,官方文档里的验证示例代码也得一并复制过去。第二个,如果你不想引入整个Bootstrap JS库,可以只写一段原生JS来处理验证逻辑,代码量也不大:
这段代码的意思是,表单提交时检查有效性,不通过就阻止提交,同时加上
was-validated类,这样Bootstrap的CSS选择器.was-validated .form-control:invalid就能匹配上,红色边框和invalid-feedback里的提示文字就出来了。在WordPress主题里加的话,放footer.php或者用
wp_footer钩子注入都行,注意别重复绑定事件。