【问题标题】:select group background color labels选择组背景颜色标签
【发布时间】:2016-08-31 16:34:46
【问题描述】:

我正在构建一个动态表单来订购产品并设置单选按钮的样式。我没有添加所有的 CSS,但足以看到我遇到的问题。我有一些JavaScript在选择单选按钮时添加一个类,但它不正常工作。我希望它能够工作,所以当您选择第 1 组中的选项之一时,按钮变为绿色并保持绿色......然后当您选择第 2 组中的选项时,该按钮也会变为绿色。

我将添加几个选项(单选组)并需要更新 javascript,以便每个组都有一个选择的单选按钮,保持绿色,但我对 javascript 了解不多。

也许每个标签都有某种类型的数组?

$('label').click(function () {
     $('label').removeClass('btn-primary3');
     $(this).addClass('btn-primary3');
 });

$('input:checked').parent().addClass('btn-primary3');
li.button-list {width:100%; margin:0px 0px 35px -20px; list-style:none; font-size:16px !important; position:relative; text-align:center;}
.checked{display:none;}
input.noradio {visibility: hidden;margin-left:-10px; }
label.btn-primary2 {background-color:#333; border-color:#333;font-size:16px !important; color:#fff; padding:10px;}
label.btn-primary3 {background-color:#008902 !important; border-color:#008902 !important;font-size:16px !important;}
label.btn-primary2:hover {background-color:#008902 !important; border-color:#008902 !important;}
label.btn-primary2:focus {background-color:#008902 !important; border-color:#008902 !important;}
label.btn-primary3:hover {background-color:#008902 !important; border-color:#008902 !important;}
label.btn-primary3:focus {background-color:#008902 !important; border-color:#008902 !important;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<h3 style="text-align:center;">First Radio Group</h3>
<ul class="btn-group"  id="input_14_20">

<li class="gchoice_14_20_0 button-list" >
<label class="wbc-button button btn btn-primary btn-primary2 active" for="choice_14_20_0" id="label_14_20_0">
<input type="radio" name="input_20"  class="noradio" id="choice_14_20_0" tabindex="1" onclick="gf_apply_rules(14,[0,92,99]);" onkeypress="gf_apply_rules(14,[0,92,99]);" autocomplete="off" checked="checked" value="Standard Floor Plan (King-Size Bed)|49900">
<i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 1</label>
</li>


<li class="gchoice_14_20_1 button-list">
<label class="wbc-button button btn btn-primary btn-primary2"> 
<input type="radio" name="input_20" class="noradio" id="choice_14_20_1" tabindex="2" value="Twin Bed Floor Plan|49900" onclick="gf_apply_rules(14,[0,92,99]);" onkeypress="gf_apply_rules(14,[0,92,99]);" autocomplete="off"><i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 2</label>
</li>

</ul>
  
  <h3 style="text-align:center;">Second Radio Group</h3>
  
 <ul class="btn-group2" id="input_14_24">

<li class="gchoice_14_24_0 button-list">
<label name="countertops" class="wbc-button button btn btn-primary btn-primary2 active" for="choice_14_24_0" id="label_14_24_0">
<input type="radio" name="input_24"  class="noradio" id="choice_14_24_0" tabindex="3" autocomplete="off" onclick="changeImage(0) gf_apply_rules(14,[0,101]);" onkeypress="gf_apply_rules(14,[0,101]);" checked="checked" value="Standard Countertops|0">
<i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 1</label>
</li>

<li class="gchoice_14_24_1 button-list">
<label name="countertops" class="wbc-button button btn btn-primary btn-primary2" for="choice_14_24_1" id="label_14_24_1"> 
<input type="radio" name="input_24" class="noradio" id="choice_14_24_1" tabindex="4" onclick="changeImage(1) gf_apply_rules(14,[0,101]);" onkeypress="gf_apply_rules(14,[0,101]);" value="Fiber-Granite Countertops|1800" autocomplete="off"><i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 2</label>
</li>

</ul>

【问题讨论】:

    标签: javascript jquery css


    【解决方案1】:

    您不需要获取脚本中的所有标签并删除 btn-primary3 类,而是只需要获取包装与单击的单选按钮同名的单选按钮的标签。

    因此,您首先要在点击的标签中获得输入的名称,方法是选择点击标签的“输入”类型的第一个(在这种情况下是唯一的)子项,并将其名称放入临时标签中变量:

    var inputName = $(this).children("input")[0].name;
    

    下一步是选择与该名称匹配的所有输入元素的父级。这些将是相关标签,然后仅从这些标签中删除该类:

    $("input[name='" + inputName + "']").parent().removeClass('btn-primary3');
    

    把它放到你现有的脚本中,你就会得到想要的结果:

    $('label').click(function () {
    var inputName = $(this).children("input")[0].name;
    $("input[name='" + inputName + "']").parent().removeClass('btn-primary3');
    $(this).addClass('btn-primary3');
    });
    
    $('input:checked').parent().addClass('btn-primary3');
    
    function gf_apply_rules() { }
    function changeImage() { }
    li.button-list {width:100%; margin:0px 0px 35px -20px; list-style:none; font-size:16px !important; position:relative; text-align:center;}
    .checked{display:none;}
    input.noradio {visibility: hidden;margin-left:-10px; }
    label.btn-primary2 {background-color:#333; border-color:#333;font-size:16px !important; color:#fff; padding:10px;}
    label.btn-primary3 {background-color:#008902 !important; border-color:#008902 !important;font-size:16px !important;}
    label.btn-primary2:hover {background-color:#008902 !important; border-color:#008902 !important;}
    label.btn-primary2:focus {background-color:#008902 !important; border-color:#008902 !important;}
    label.btn-primary3:hover {background-color:#008902 !important; border-color:#008902 !important;}
    label.btn-primary3:focus {background-color:#008902 !important; border-color:#008902 !important;}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <h3 style="text-align:center;">First Radio Group</h3>
    <ul class="btn-group"  id="input_14_20">
    
    <li class="gchoice_14_20_0 button-list" >
    <label class="wbc-button button btn btn-primary btn-primary2 active" for="choice_14_20_0" id="label_14_20_0">
    <input type="radio" name="input_20"  class="noradio" id="choice_14_20_0" tabindex="1" onclick="gf_apply_rules(14,[0,92,99]);" onkeypress="gf_apply_rules(14,[0,92,99]);" autocomplete="off" checked="checked" value="Standard Floor Plan (King-Size Bed)|49900">
    <i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 1</label>
    </li>
    
    
    <li class="gchoice_14_20_1 button-list">
    <label class="wbc-button button btn btn-primary btn-primary2"> 
    <input type="radio" name="input_20" class="noradio" id="choice_14_20_1" tabindex="2" value="Twin Bed Floor Plan|49900" onclick="gf_apply_rules(14,[0,92,99]);" onkeypress="gf_apply_rules(14,[0,92,99]);" autocomplete="off"><i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 2</label>
    </li>
    
    </ul>
      
      <h3 style="text-align:center;">Second Radio Group</h3>
      
     <ul class="btn-group2" id="input_14_24">
    
    <li class="gchoice_14_24_0 button-list">
    <label name="countertops" class="wbc-button button btn btn-primary btn-primary2 active" for="choice_14_24_0" id="label_14_24_0">
    <input type="radio" name="input_24"  class="noradio" id="choice_14_24_0" tabindex="3" autocomplete="off" onclick="changeImage(0); gf_apply_rules(14,[0,101]);" onkeypress="gf_apply_rules(14,[0,101]);" checked="checked" value="Standard Countertops|0">
    <i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 1</label>
    </li>
    
    <li class="gchoice_14_24_1 button-list">
    <label name="countertops" class="wbc-button button btn btn-primary btn-primary2" for="choice_14_24_1" id="label_14_24_1"> 
    <input type="radio" name="input_24" class="noradio" id="choice_14_24_1" tabindex="4" onclick="changeImage(1); gf_apply_rules(14,[0,101]);" onkeypress="gf_apply_rules(14,[0,101]);" value="Fiber-Granite Countertops|1800" autocomplete="off"><i class="fa fa-check checked" style="margin-left:-15px;"></i> <i class="fa fa-times unchecked" style="margin-left:-15px;"></i> Option 2</label>
    </li>
    
    </ul>

    请注意,我为“gf_apply_rules”和“changeImage”添加了占位符函数,并更正了 onclick 处理程序中缺少的分号语法错误,以避免 sn-p 中的错误。

    【讨论】:

    • 有道理!我正在慢慢了解 javascript 的工作原理。谢谢你的解释!
    猜你喜欢
    • 2018-04-04
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2021-03-19
    • 1970-01-01
    相关资源
    最近更新 更多