2014-03-17 03:03:53 +01:00
< div class = "bs-docs-section" >
< h1 id = "buttons" class = "page-header" > Buttons < small > button.js< / small > < / h1 >
2014-08-05 12:56:33 +02:00
< p class = "lead" > Do more with buttons. Control button states or create groups of buttons for more components like toolbars.< / p >
2014-03-17 03:03:53 +01:00
2014-08-05 12:56:33 +02:00
< div class = "bs-callout bs-callout-danger" >
< h4 > Cross-browser compatibility< / h4 >
2014-09-04 01:50:47 +02:00
< p > < a href = "https://github.com/twbs/bootstrap/issues/793" > Firefox persists form control states (disabledness and checkedness) across page loads< / a > . A workaround for this is to use < code > autocomplete="off"< / code > . See < a href = "https://bugzilla.mozilla.org/show_bug.cgi?id=654072" > Mozilla bug #654072< / a > .< / p >
2014-08-05 12:56:33 +02:00
< / div >
< h2 id = "buttons-stateful" > Stateful< / h2 >
2014-03-17 03:03:53 +01:00
< p > Add < code > data-loading-text="Loading..."< / code > to use a loading state on a button.< / p >
2014-08-05 12:56:33 +02:00
< div class = "bs-callout bs-callout-info" >
< h4 > Use whichever state you like!< / h4 >
< p > For the sake of this demonstration, we are using < code > data-loading-text< / code > and < code > $().button('loading')< / code > , but that's not the only state you can use. < a href = "#buttons-methods" > See more on this below in the < code > $().button(string)< / code > documentation< / a > .< / p >
< / div >
< div class = "bs-example" >
< button type = "button" id = "loading-example-btn" data-loading-text = "Loading..." class = "btn btn-primary" autocomplete = "off" >
2014-03-17 03:03:53 +01:00
Loading state
< / button >
< / div > <!-- /example -->
{% highlight html %}
2014-08-05 12:56:33 +02:00
< button type = "button" id = "myButton" data-loading-text = "Loading..." class = "btn btn-primary" autocomplete = "off" >
2014-03-17 03:03:53 +01:00
Loading state
< / button >
2014-08-05 12:56:33 +02:00
2014-03-17 03:03:53 +01:00
< script >
2014-08-05 12:56:33 +02:00
$('#myButton').on('click', function () {
var $btn = $(this).button('loading')
// business logic...
$btn.button('reset')
})
2014-03-17 03:03:53 +01:00
< / script >
{% endhighlight %}
2014-08-05 12:56:33 +02:00
< h2 id = "buttons-single-toggle" > Single toggle< / h2 >
2014-03-17 03:03:53 +01:00
< p > Add < code > data-toggle="button"< / code > to activate toggling on a single button.< / p >
2014-08-05 12:56:33 +02:00
< div class = "bs-example" >
2014-10-17 16:17:57 +02:00
< button type = "button" class = "btn btn-primary" data-toggle = "button" aria-pressed = "false" autocomplete = "off" >
2014-08-05 12:56:33 +02:00
Single toggle
< / button >
2014-03-17 03:03:53 +01:00
< / div > <!-- /example -->
{% highlight html %}
2014-10-17 16:17:57 +02:00
< button type = "button" class = "btn btn-primary" data-toggle = "button" aria-pressed = "false" autocomplete = "off" >
2014-08-05 12:56:33 +02:00
Single toggle
< / button >
2014-03-17 03:03:53 +01:00
{% endhighlight %}
2014-10-17 16:17:57 +02:00
< div class = "bs-callout bs-callout-warning" >
< h4 > Pre-toggled buttons need < code > .active< / code > and < code > aria-pressed="true"< / code > < / h4 >
< p > For pre-toggled buttons, you must add the < code > .active< / code > class and the < code > aria-pressed="true"< / code > attribute to the < code > button< / code > yourself.< / p >
< / div >
2014-03-17 03:03:53 +01:00
2014-08-05 12:56:33 +02:00
< h2 id = "buttons-checkbox-radio" > Checkbox / Radio< / h2 >
< p > Add < code > data-toggle="buttons"< / code > to a < code > .btn-group< / code > containing checkbox or radio inputs to enable toggling in their respective styles.< / p >
2014-04-03 04:55:05 +02:00
< div class = "bs-callout bs-callout-warning" >
2014-08-05 12:56:33 +02:00
< h4 > Preselected options need < code > .active< / code > < / h4 >
< p > For preselected options, you must add the < code > .active< / code > class to the input's < code > label< / code > yourself.< / p >
2014-04-03 04:55:05 +02:00
< / div >
2014-07-18 20:48:00 +02:00
< div class = "bs-callout bs-callout-warning" >
< h4 > Visual checked state only updated on click< / h4 >
< p > If the checked state of a checkbox button is updated without firing a < code > click< / code > event on the button (e.g. via < code > < input type="reset"> < / code > or via setting the < code > checked< / code > property of the input), you will need to toggle the < code > .active< / code > class on the input's < code > label< / code > yourself.< / p >
< / div >
2014-08-05 12:56:33 +02:00
< div class = "bs-example" >
2014-03-17 03:03:53 +01:00
< div class = "btn-group" data-toggle = "buttons" >
2014-04-03 04:55:05 +02:00
< label class = "btn btn-primary active" >
2014-08-05 12:56:33 +02:00
< input type = "checkbox" checked autocomplete = "off" > Checkbox 1 (pre-checked)
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "checkbox" autocomplete = "off" > Checkbox 2
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "checkbox" autocomplete = "off" > Checkbox 3
2014-03-17 03:03:53 +01:00
< / label >
< / div >
< / div > <!-- /example -->
{% highlight html %}
< div class = "btn-group" data-toggle = "buttons" >
2014-04-03 04:55:05 +02:00
< label class = "btn btn-primary active" >
2014-08-05 12:56:33 +02:00
< input type = "checkbox" autocomplete = "off" checked > Checkbox 1 (pre-checked)
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "checkbox" autocomplete = "off" > Checkbox 2
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "checkbox" autocomplete = "off" > Checkbox 3
2014-03-17 03:03:53 +01:00
< / label >
< / div >
{% endhighlight %}
2014-08-05 12:56:33 +02:00
< div class = "bs-example" >
2014-03-17 03:03:53 +01:00
< div class = "btn-group" data-toggle = "buttons" >
2014-04-03 04:55:05 +02:00
< label class = "btn btn-primary active" >
2014-08-05 12:56:33 +02:00
< input type = "radio" name = "options" id = "option1" autocomplete = "off" checked > Radio 1 (preselected)
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "radio" name = "options" id = "option2" autocomplete = "off" > Radio 2
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "radio" name = "options" id = "option3" autocomplete = "off" > Radio 3
2014-03-17 03:03:53 +01:00
< / label >
< / div >
< / div > <!-- /example -->
{% highlight html %}
< div class = "btn-group" data-toggle = "buttons" >
2014-04-03 04:55:05 +02:00
< label class = "btn btn-primary active" >
2014-08-05 12:56:33 +02:00
< input type = "radio" name = "options" id = "option1" autocomplete = "off" checked > Radio 1 (preselected)
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "radio" name = "options" id = "option2" autocomplete = "off" > Radio 2
2014-03-17 03:03:53 +01:00
< / label >
< label class = "btn btn-primary" >
2014-08-05 12:56:33 +02:00
< input type = "radio" name = "options" id = "option3" autocomplete = "off" > Radio 3
2014-03-17 03:03:53 +01:00
< / label >
< / div >
{% endhighlight %}
2014-08-05 12:56:33 +02:00
< h2 id = "buttons-methods" > Methods< / h2 >
2014-03-17 03:03:53 +01:00
< h4 > $().button('toggle')< / h4 >
< p > Toggles push state. Gives the button the appearance that it has been activated.< / p >
< h4 > $().button('reset')< / h4 >
< p > Resets button state - swaps text to original text.< / p >
< h4 > $().button(string)< / h4 >
2014-08-05 12:56:33 +02:00
< p > Swaps text to any data defined text state.< / p >
2014-03-17 03:03:53 +01:00
{% highlight html %}
2014-08-05 12:56:33 +02:00
< button type = "button" id = "myStateButton" data-complete-text = "finished!" class = "btn btn-primary" autocomplete = "off" >
...
< / button >
2014-03-17 03:03:53 +01:00
< script >
2014-08-05 12:56:33 +02:00
$('#myStateButton').on('click', function () {
$(this).button('complete') // button text will be "finished!"
})
2014-03-17 03:03:53 +01:00
< / script >
{% endhighlight %}
< / div >