点击其他按钮后如何取消按钮的高亮显示(Web CSS Bootstrap)

3
我有一个注册页面,上面有两个按钮。点击其中一个按钮,相应的容器就会显示。当点击按钮时,背景颜色会更改并保持不变,即使我选择另一个按钮也是如此。然后,如果我再次选择该按钮,它将恢复为未选中/不活跃状态。
我希望被点击的按钮能够保持其活动颜色,但仅当另一个按钮没有被点击时。如果点击了另一个按钮,则希望第一个按钮恢复原来的背景颜色。
以下是js代码:
<script type = "text/javascript">
  function displayForm(c) {
    if (c.value == "1") {

      document.getElementById("container1").style.display = 'inline';
      document.getElementById("container2").style.display = 'none';
    } else if (c.value == "2") {
      document.getElementById("container1").style.display = 'none';

      document.getElementById("container2").style.display = 'inline';
    } else {}
  } 
</script>

以下是按钮(对于格式问题,我很抱歉):

                        <!--SELECTION BUTTONS-->
                            <form>
                                <div class="control-group">

                                    <label class="control-label">Are you a:</label>

                                    <div class="controls">

                                            <p><div id="account-type" name="account-type" class="btn-group selection-buttons" data-toggle="buttons-radio">

                                            <button value="1" type="button" name="formselector" onClick="displayForm(this)" id="button1" class="btn btn-info">
                                            Buttons1</button>

                                            <button value="2" type="button" name="formselector" onClick="displayForm(this)" id="button2" class="btn btn-info">Button2</button>

                                          </div></p>

                                    </div>

                                </div>
                            </form>

以下是使用Bootstrap的CSS代码:

/* SWITCH BUTTONS */
.selection-buttons button{
    width: 140px;
    height: 60px;
    color: #FFF;
    background-color: #FFB10D;
    border-color: #fff; /* e59f0b */
}

.selection-buttons .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info {
    color: #FFF;
    background-color: #00CC66;
    border-color: #fff; /* 00b75b */
}

谢谢!

它是否已经添加了像active这样的类? - epascarello
@epascarello 是的,它确实如此。 - nhirschl
1个回答

3

这是一个相对简单的解决方案。在你的JS中添加以下代码:

 function displayForm(c) {
          for (var i = 1; i <= number_of_buttons; i++) {
            if (document.getElementById("button"+i) {
             document.getElementById("button"+i).className = "active";
          } else {
              document.getElementById("button"+i).className = "inactive";
       }
     }
   }

然后,只需使用CSS文件设置您想要的activeinactive类的格式。如果您没有1000多个按钮,这将足够高效地满足您的需求。


谢谢。我需要将不活动/活动的类名添加到按钮中吗?它似乎没有起作用。我将JS添加到上面我写的JS中(在同一个脚本中),并将上面的CSS类名更改为.active和.inactive: .inactive { width: 140px; height: 60px; color: #FFF; background-color: #FFB10D; border-color: #fff; /* e59f0b */}.active .active:hover, .active:focus, .active:active, .active.active, .open .dropdown-toggle.btn-info { color: #FFF; background-color: #00CC66; border-color: #fff; /* 00b75b */ } - nhirschl
将“inactive”类添加到按钮上,除非您希望在渲染时有一个按钮处于活动状态,在这种情况下请将“active”添加到该按钮上。我忘了要检查每次迭代中的按钮是否具有“active”类并删除该类,或者是否具有“inactive”并删除该类,具体取决于您是使该按钮变为非活动还是活动。您可以在此处找到示例:http://www.w3schools.com/jquery/html_removeclass.asp请记住,您需要使用jquery才能使其正常工作。 - sulimmesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接