Bootstrap 4 的错误样式 Select2

Posted

技术标签:

【中文标题】Bootstrap 4 的错误样式 Select2【英文标题】:Error styling Select2 for Bootstrap 4 【发布时间】:2018-10-13 20:11:47 【问题描述】:

我正在使用 Bootstrap 4,对于 <select> 元素,我想使用 Select2。

问题是它没有官方的 Bootstrap 4 模板,所以我在寻找,我发现了 this 项目,太棒了。

但我对is-invalid 类有一个问题。

当我使用它时,当页面加载时,<select> 边框会变为红色,然后返回到正常状态

我尝试制作一个简单的类来使用相同的 Bootstrap 颜色

.invalid-select2 
  border-color: #dc3545;


.invalid-select2:focus 
  border-color: #dc3545;
  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);

但结果是一样的;

你可以看到问题 JSFIDDLE

有人知道我该如何处理?

非常感谢!

【问题讨论】:

当使用 select2 时,原来的 select 元素被“隐藏”了,这就是为什么你会得到最初是红色边框的印象,然后在 select2 渲染时又恢复正常。使用一点 JS,您可以检查您的原始选择是否具有“无效”类并将其应用于 select2 元素。 我很好奇,你为什么默认应用is-invalid? @funkysoul 太棒了!我会试试的:D @JonathanChaplin 我申请测试;我正在使用带有 ModelState 的 asp.net mvc 来确定该类是否必须存在:D @funkysoul 我正在尝试,这很有效,我只有一个悬停问题,你有什么想法来检测该跨度的打开以再次添加 is-invalid 类吗?太棒了! 【参考方案1】:

闪烁是因为您将类添加到选择框的类属性中,因此样式会立即应用。之后,应用 select2 类来隐藏选择框(导致闪烁)。

解决此问题的一种方法是在文档准备好时简单地应用该类。

$(document).ready(function()

    $('#combo').select2
  (
    theme: 'bootstrap'
  );

  $("#combo + span").addClass("is-invalid");

);

编辑:要解决您遇到的焦点问题,您需要覆盖几个类。

.is-invalid .select2-selection,
.needs-validation ~ span > .select2-dropdown
  border-color:red !important;

.is-invalid .select2-selection 选择下拉列表的顶部,第二类(.needs-validation ~ span > .select2-dropdown)选择实际下拉列表。请注意,一旦验证表单,我已将 .needs-validation 添加到*** div,您只需将其切换为 was-validated

https://getbootstrap.com/docs/4.0/components/forms/#validation

Here is a fiddle

【讨论】:

感谢您的回复!我正在看它,但我在 jsfiddle 中看到它没有边界,它必须看起来像这样 jsfiddle.net/ao9bu15h/3 我明白了。给我一秒钟。 我几乎解决了 funkysoul i>评论,我用边界打开时与边界一起战斗:p span> 在你的 document.ready 中试试这个:$("#combo + span").addClass("is-invalid"); 它的工作,我正在做类似的事情,$('select.is-invalid.select2-hidden-accessible').each(function() $(this).next('span').addClass('is-invalid');); 但问题是在打开选择时添加 is-invalid:focus,谢谢!!【参考方案2】:

我可以使用一些 CSS 来设置红色边框的样式

.is-invalid + .select2-container--bootstrap .select2-selection--single 
    border: 1px solid #f44336;

【讨论】:

使用 Bootstrap 4:.is-invalid + .select2-container--bootstrap4 .select2-selection--single border: 2px solid #dc3545; 【参考方案3】:

您是否尝试将 !important 添加到 css 属性?

【讨论】:

是的,但这不是解决方案 :'( 感谢您的回复!

以上是关于Bootstrap 4 的错误样式 Select2的主要内容,如果未能解决你的问题,请参考以下文章

将 bootstrap has-error 样式应用于 select2 元素

使用`jQuery验证`和`Select2`根据`bootstrap4`显示和隐藏成功和错误[重复]

如何利用Bootstrap样式生成可搜索下拉框

Turbolinks 不适用于 Rails 4.2.4 Ruby 2.2.4 中的 bootstrap select2

Select2 在 Bootstrap 模式中选择

Select2 v4 和 Bootstrap v4 - 缺少下拉菜单