You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅对Bootstrap表单的无效字段应用自定义验证样式?

解决Bootstrap表单仅在字段无效时显示样式的问题

要实现仅在字段无效时显示红色样式,有效时保持默认灰色且无绿色对勾,只需要覆盖Bootstrap默认的表单验证样式即可,具体操作如下:

  • 重置有效状态的默认样式
    Bootstrap默认会给验证通过的输入框添加绿色边框和对勾图标,我们需要把这些样式重置回普通输入框的状态:

    /* 重置有效输入框样式,恢复默认灰色边框 */
    .was-validated .form-control:valid,
    .form-control.is-valid {
      border-color: #dee2e6; /* 匹配.form-control默认边框颜色 */
      box-shadow: none; /* 移除绿色焦点阴影 */
      background-image: none; /* 移除绿色对勾图标 */
    }
    
  • 保留无效状态的样式(可选)
    如果Bootstrap默认的无效样式(红色边框、红色阴影、错误图标)符合你的需求,这一步可以省略。要是需要自定义,也可以重新定义无效状态的样式:

    /* 自定义无效输入框样式(与Bootstrap默认一致,可按需调整) */
    .was-validated .form-control:invalid,
    .form-control.is-invalid {
      border-color: #dc3545;
      box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
    }
    

完整示例代码

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<style>
.was-validated .form-control:valid,
.form-control.is-valid {
  border-color: #dee2e6;
  box-shadow: none;
  background-image: none;
}
</style>
<div class="container">
  <form class="needs-validation was-validated" novalidate>
    <label for="sample" class="form-label">Number</label>
    <input type="number" class="form-control" id="sample" min="1" step="1" required />
  </form>
</div>

修改后,输入框在无效时会显示红色边框和错误图标,有效时则保持默认的灰色边框,不会出现绿色对勾和绿色边框。

内容的提问来源于stack exchange,提问作者DJDuque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:03:13