【问题标题】:Bootstrap: set initial radio button checked in HTMLBootstrap:设置在 HTML 中选中的初始单选按钮
【发布时间】:2013-11-01 17:12:56
【问题描述】:

我正在使用 Bootstrap 的 JavaScript 按钮来设置一些单选按钮的样式,但我似乎无法将初始按钮设置为选中状态。

这是我的代码:

<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-info">
    <input checked="checked" type="radio" id="match-three" name="options">Three numbers
  </label>
  <label class="btn btn-info">
    <input type="radio" name="options" id="match-four">Four numbers
  </label>
</div>

第一个按钮有checked="checked",但它的样式没有被选中。

单击事件后按钮的样式设置为 OK,因此我不确定初始加载时出了什么问题。

Bootply 版本在这里:http://bootply.com/89566

【问题讨论】:

    标签: twitter-bootstrap twitter-bootstrap-3


    【解决方案1】:

    如果您使用的是 HTML 5 文档类型,只需使用 checked 不带任何值:

    <label class="btn btn-info active">
        <input checked type="radio" id="match-three" name="options">Three numbers
    </label>
    

    checked="checked" should work as well,所以你必须澄清什么不适合你。

    • input 上具有checked 属性将确保表单字段的状态正确
    • label 上添加active 类将设置正确的视觉状态

    Reference documentation.

    【讨论】:

    • 为什么这是公认的答案,它甚至没有解决问题。这与布尔属性无关。这是关于按钮组中的 Bootstrap 单选按钮(data-toggle="buttons" 位也是相关的)。这个问题很清楚,它甚至包括示例代码。 Here is a jsFiddle demonstrating the issue again.
    • @basic6 您的演示有错误(您所有的inputs 属于同一组)。 Here's your demo updated to correct the groupings 表明确实选中了单选按钮。
    • 谢谢,我应该使用不同的组 - 但实际上对于这个问题没有任何区别。即使您添加了一些 CSS 来显示选中了哪一个,顶行中的第二个单选按钮 (Two (checked but without class)) “激活”,这就是这里的问题。这与 checked 属性无关,重点是单选按钮的样式不像 Bootstrap 检查过的那样,除非您添加“活动”类。
    • 正如 basic6 所指出的,这不是问题的正确答案。请参阅getbootstrap.com/javascript/#buttons-checkbox-radio“对于预选选项,您必须自己将 .active 类添加到输入标签中”。
    【解决方案2】:

    就像 Skelly 提到的,活动类是 Bootstrap 正在切换的,它不查看选中的属性。但是,您不必使用 Javascript...

    <label class="btn btn-info active">
        <input checked type="radio" id="match-three" name="options">Three numbers
    </label>
    

    会给你你想要的。

    【讨论】:

    • Bootstrap 需要 class="... active"&lt;input checked ...&gt;
    • 已上传。这是正确的答案 - 缺少“活动”类,否则 Bootstrap 不会突出显示单选按钮。
    【解决方案3】:

    如果您希望 Bootstrap button() 组件最初识别 checked 输入,您需要添加一些 jQuery 之类的......

    $('[checked="checked"]').parent().addClass("active");
    

    这会将活动状态设置为组中相应的按钮/标签。

    【讨论】:

    • 问题是关于如何在初始 HTML 中设置状态,而不是如何在 Javascript 中进行设置。但如果您确实想使用 Javascript 来实现,更好的解决方案是在单选按钮输入字段上调用 ​​click()
    • 那个?是关于 BS JavaScript 组件的问题,并且没有指定首选项。 HTML 或 JS 解决方案,为什么click() 是更好的解决方案?你有一个例子吗?点击会导致不必要的点击事件传播。
    • 我会说这是一个更好的解决方案,因为它是一个更通用的解决方案,适用于任何单选按钮,并且如果 Bootstrap 稍后更改它们实现样式单选按钮的方式(这有点目前破解)。它还传播事件,以便页面的其他基于单选按钮状态更改的组件将得到通知。但是,如果在 HTML 加载时初始状态是已知的,我会坚持使用 bbengfort 的解决方案,这样在页面加载时单选按钮状态不会出现任何明显的翻转。
    • 就我而言,我无法更改 html。所以这对我来说是一个简单而有效的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2016-07-28
    相关资源
    最近更新 更多