javascript - 检查不同 div 类中的单选按钮

标签 javascript jquery html css

我一直在尝试检查网页上的某些单选按钮,方法是遍历所有单选按钮并尝试在每个单选按钮“组”中选择第二个值,但我对它的语法很困惑。

我在网上查找文档时,在每组单选按钮上都有相同的“名称”变量,以使每个组都易于访问,但在这个网站上情况并非如此,我被困在看似简单的解决方案中。

我一直在尝试检查每个组中的“radX_ExtendedHold”单选按钮,以禁用页面底部的“按钮页脚类”,直到用户从任何单选组中选择任何不同的值纽扣。这是它的 HTML 代码(这不是我的网站,我无法编辑 HTML 来更改名称或任何内容的值):

<div class="subsRenewEntry">
  <div class="seriesOptions" data-default="Renewed">
    <span>
                            <input id="rad0_Renewed" type="radio" name="action_f5d61c45-69fc-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad0_Renewed" >Yes, I want to renew now</label>                            
                        </span>

    <span>
                            <input id="rad0_ExtendedHold" type="radio" name="action_f5d61c45-69fc-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad0_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
  </div>
</div>

<div class="subsRenewEntry">
  <div class="seriesOptions" data-default="Renewed">
    <span>
                            <input id="rad1_Renewed" type="radio" name="action_21e7930b-31fd-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad1_Renewed" >Yes, I want to renew now</label>
                        </span>

    <span>
                            <input id="rad1_ExtendedHold" type="radio" name="action_21e7930b-31fd-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad1_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
  </div>
</div>

<div class="subsRenewEntry">
  <div class="seriesOptions" data-default="Renewed">
    <span>
                            <input id="rad2_Renewed" type="radio" name="action_d1b6d498-99da-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad2_Renewed" >Yes, I want to renew now</label>                            
                        </span>

    <span>
                            <input id="rad2_ExtendedHold" type="radio" name="action_d1b6d498-99da-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad2_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
  </div>
</div>

<div class="subsRenewEntry">
  <div class="seriesOptions" data-default="Renewed">
    <span>
                            <input id="rad3_Renewed" type="radio" name="action_3fe94663-32fd-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad3_Renewed" >Yes, I want to renew now</label>                            
                        </span>

    <span>
                            <input id="rad3_ExtendedHold" type="radio" name="action_3fe94663-32fd-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad3_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
  </div>
</div>

<div class="subsRenewEntry">
  <div class="seriesOptions" data-default="Renewed">
    <span>
                            <input id="rad4_Renewed" type="radio" name="action_f6fe26d5-32fd-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad4_Renewed" >Yes, I want to renew now</label>                           
                        </span>

    <span>
                            <input id="rad4_ExtendedHold" type="radio" name="action_f6fe26d5-32fd-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad4_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
  </div>
</div>

<div class="buttonsFooter">
  <button type="submit" class="small_button_a">
            Proceed
        </button>
</div>

我尝试使用以下代码获取“subsRenewEntry”类中的所有元素:

$( ".subsRenewEntry" ).each(function( index ) {
  console.log( index + ": " + $( this ).text() );
});

这似乎返回了我需要的正确组。但它只是试图检查每个组中的第二个元素。

我尝试了各种方法来尝试解决问题,如下所示:

$( "rad" + index + "_ExtendedHold").filter('[value="ExtendedHold"]').prop('checked', true);

$('.screen-RenewSubscriptions_aspx').find('option[value="ExtendedHold"]').prop('checked', true);

但它们都不起作用。

我还尝试了一种适用于单个元素的不同方法,这对我来说不太有用,因为我需要动态分配按钮,以便它可以在具有任意 X 数量的单选按钮组的任何页面上运行.

无论如何,代码如下:

$('input:radio[name="action_f5d61c45-69fc-e711-8d62-000c2979ba39"]').filter('[value="ExtendedHold"]').attr('checked', true);

但这同样只适用于其中一个按钮(显然是因为该名称仅等同于单选按钮的名称之一)。

我对 javascript/jQuery 还是很陌生,访问这些变量的语法似乎让我很困惑,因为这似乎是一个总体上非常简单的解决方案。如果有人能指出我正确的方向,我将非常感激。我不期望有人为我编写代码,只是一些关于我哪里出错以及如何改变我的想法的指示。

最佳答案

如果你想检查每个复选框的值,那么请尝试下面的 jquery 代码。只有这段代码才能帮助你做事。如果您想要不同的结果,请在此处发表评论,以便我尝试解决它们。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="subsRenewEntry">                    
                    <div class="seriesOptions" data-default="Renewed">
                        <span>
                            <input id="rad0_Renewed" type="radio" name="action_f5d61c45-69fc-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad0_Renewed" >Yes, I want to renew now</label>                            
                        </span>

                        <span>
                            <input id="rad0_ExtendedHold" type="radio" name="action_f5d61c45-69fc-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad0_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
                    </div>
                </div>

                <div class="subsRenewEntry">
                    <div class="seriesOptions" data-default="Renewed">
                        <span>
                            <input id="rad1_Renewed" type="radio" name="action_21e7930b-31fd-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad1_Renewed" >Yes, I want to renew now</label>
                        </span>

                        <span>
                            <input id="rad1_ExtendedHold" type="radio" name="action_21e7930b-31fd-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad1_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
                    </div>
                </div>

                <div class="subsRenewEntry">
                    <div class="seriesOptions" data-default="Renewed">
                        <span>
                            <input id="rad2_Renewed" type="radio" name="action_d1b6d498-99da-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad2_Renewed" >Yes, I want to renew now</label>                            
                        </span>

                        <span>
                            <input id="rad2_ExtendedHold" type="radio" name="action_d1b6d498-99da-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad2_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
                    </div>
                </div>

                <div class="subsRenewEntry">
                    <div class="seriesOptions" data-default="Renewed">
                        <span>
                            <input id="rad3_Renewed" type="radio" name="action_3fe94663-32fd-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad3_Renewed" >Yes, I want to renew now</label>                            
                        </span>

                        <span>
                            <input id="rad3_ExtendedHold" type="radio" name="action_3fe94663-32fd-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad3_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
                    </div>
                </div>

                <div class="subsRenewEntry">
                    <div class="seriesOptions" data-default="Renewed">
                        <span>
                            <input id="rad4_Renewed" type="radio" name="action_f6fe26d5-32fd-e711-8d62-000c2979ba39" value="Renewed"  />
                            <label for="rad4_Renewed" >Yes, I want to renew now</label>                           
                        </span>

                        <span>
                            <input id="rad4_ExtendedHold" type="radio" name="action_f6fe26d5-32fd-e711-8d62-000c2979ba39" value="ExtendedHold"  />
                            <label for="rad4_ExtendedHold" >Not sure, keep my seat for the time being</label>
                        </span>
                    </div>
                </div>

        <div class="buttonsFooter">
        <button type="submit" class="small_button_a">
            Proceed
        </button>
    </div>

<script>
$(document).ready(function(){
    var myarray = [];
    $( ".subsRenewEntry .seriesOptions span:nth-child(2) input[type=radio]").prop( "checked", true );
    var true_val= $('.subsRenewEntry .seriesOptions span:nth-child(2) input[type=radio]').is(':checked');

    if(true_val==true) { 
            $('.buttonsFooter').hide();
    }   
    $(".subsRenewEntry .seriesOptions span input[type=radio]").change(function(){
         $(".subsRenewEntry .seriesOptions span input[type=radio]:checked").each(function(){
            var var_renewd= $(this).val();
            if(var_renewd=="Renewed"){
                $('.buttonsFooter').show();
            }
             myarray.push(var_renewd);              
         });            
        if(jQuery.inArray("Renewed", myarray) !== -1){
            $('.buttonsFooter').show();
        }else{
            $('.buttonsFooter').hide();
        }                       
        myarray=[];
    }); 
});     

该代码将为您提供以下 url 输出。 https://www.screencast.com/t/uTBt2FtCFKkv

关于javascript - 检查不同 div 类中的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48499673/

相关文章:

javascript - 在 Angular 服务中使用 Underscore 和 Google map 时出现 JsHint 错误

javascript - 为什么 onsubmit 事件有效但 addEventListener 无效?

javascript - 禁用 anchor onclick

jquery - 根据值选中或取消选中具有相同类名的所有复选框

php - 从我的网站接收来自申请表的邮件时遇到问题

javascript - 使用 jQuery 删除选定的文件

javascript - 网络 map 上的弹出窗口

javascript - 触发 dayClick of fullCalendar with agendaDay view

javascript - 动态选项卡的奇怪行为

javascript - Tumblr 主题中 CSS 背景中的随机图像