Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bootstrap buttons not getting highlighted when clicked

I have an app with 3 buttons, the 3 buttons make an AJAX call to retrieve some data and redraw a table with the data. However when clicked the button should be kept highlighted so the user knows which data they are viewing.

This is the JS code that calls the Web API method:

   iniciativasEstrategicas.GetVistaActividades = function (filtro) {
        var idObjetivoValue = sessionStorage.idObjetivoValue;
        $('#tab_vista1').html('<br><br><br><img class="loadImage" src="Images/loader.gif" />');
        $.ajax({
            url: 'IniciativasEstrategicasWebPart/GetVistaActividades',
            type: 'POST',
            data: {
                idObjetivo: idObjetivoValue,
                filtro: filtro
            },
            success: function (data) {
                drawVistaActividades(data);
            },
            error: function (data) {
                showErrorMessage(data);
            }
        });
    }   

This is the method that draws the data:

 function drawVistaActividades(data) {
        resetBreadCrumb();
        var html = "";
        for (var i = 0; i < data.length; i++) {
            html += template.rowVistaActividades
                .replace("{0}", data[i].nombreActividad)
                .replace("{1}", data[i].iniciativaName)
                .replace("{2}", data[i].fechaVencimiento)
                .replace("{3}", data[i].fechaRealTerminacion)
                .replace("{4}", data[i].responsables);
        }
        $("#tab_vistaActividades").html("<br>" + "<br>" + template.tableVistaActividades.replace("{0}", html));
    }

This is the table template that I use to draw the data, and the buttons are there

tableVistaActividades: "<div>" +
                                    "<div>" + 
                                        "<div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">" +
                                          "<button type=\"button\" class=\"btn btn-default\" onclick=\"iniciativasEstrategicas.GetVistaActividades('A tiempo')\">A tiempo</button>" +
                                          "<button type=\"button\" class=\"btn btn-default\" onclick=\"iniciativasEstrategicas.GetVistaActividades('Atrasadas')\">Atrasadas</button>" +
                                          "<button type=\"button\" class=\"btn btn-default\" onclick=\"iniciativasEstrategicas.GetVistaActividades('Pendientes')\">Pendientes</button>" +
                                        "</div>" +
                                    "</div>" + 
                                    "<table class='table'>" +
                                        "<thead>" +
                                            "<tr>" +
                                                "<th>" +
                                                    "Actividad" +
                                                "</th>" +
                                                "<th>" +
                                                    "Iniciativa" +
                                                "</th>" +
                                                "<th>" +
                                                    "Fecha propuesta" +
                                                "</th>" +
                                                "<th>" +
                                                    "Fecha real terminación" +
                                                "</th>" +
                                                "<th>" +
                                                    "Responsables" +
                                                "</th>" +
                                            "</tr>" +
                                        "</thead>" +
                                        "<tbody>" +
                                            "{0}" +
                                        "</tbody>" +
                                    "</table>" +"<div>",

and the row template

rowVistaActividades: "<tr>" +
                        "<td>" +
                            "{0}" +
                        "</td>" +
                        "<td>" +
                            "{1}" +
                        "</td>" +
                        "<td>" +
                            "{2}" +
                        "</td>" +
                        "<td>" +
                            "{3}" +
                        "</td>" +
                        "<td>" +
                            "{4}" +
                        "</td>" +
                    "</tr>",

As you can see in this page.

We are using the same Bootstrap button code and in that page the button remains highlighted when clicked.

like image 377
Luis Valencia Avatar asked Sep 01 '15 22:09

Luis Valencia


People also ask

How do I disable focus button disabled?

If you want to remove the focus around a button, you can use the CSS outline property. You need to set the “none” value of the outline property.

Which is the correct way of setting color to buttons in bootstrap?

The color of the buttons can be changed by using pre-defined classes like btn-info, btn-default, btn-primary, btn-danger. The size of the button can also be defined by using the pre-defined classes e.g. for large button use . btn-lg For the small button, use . btn-sm and for extra small use btn-xs class.

Can you customize Bootstrap buttons?

Because of its framework, Bootstrap's buttons are already styled when they're added to the site. However, if you want to create your own custom button style, you can do that in Bootstrap's CSS file.

How do I remove a blue outline in bootstrap?

Also, this issue can occur with anchor/link/input elements such as <a>,<button>, <input> show unexpected border when you clicked on the element. How to change this issue with the help of CSS or Bootstrap? The solution is adding “outline: none;” to the selector.


2 Answers

This should solve your problem, basically you need to add "active" to selected option and remove "active" from siblings which was previously selected.

$(".btn-group > .btn").click(function(){
    $(this).addClass("active").siblings().removeClass("active");
    $(this).addClass("active");
});
like image 172
Prabhat Singh Avatar answered Oct 18 '22 04:10

Prabhat Singh


As @taTrifynor said in the comment, you should simply use Button groups with input type="radio", read about it. For example:

JSFiddle

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"/>

<div class="btn-group" data-toggle="buttons">
    <label class="btn btn-primary active">
        <input type="radio" name="options" id="option1" autocomplete="off" checked="checked"/>Button 1 (preselected)
    </label>
    <label class="btn btn-primary">
        <input type="radio" name="options" id="option2" autocomplete="off"/>Button 2
    </label>
    <label class="btn btn-primary">
        <input type="radio" name="options" id="option3" autocomplete="off"/>Button 3
    </label>
</div>

Or I don't understand what do you want.

like image 31
sergdenisov Avatar answered Oct 18 '22 03:10

sergdenisov