如何使用JQuery取消选中GridView中的所有单选按钮?

时间:2013-12-17 05:14:13

标签: c# javascript jquery asp.net gridview

我在GridView中有一个单选按钮。我想取消选中所有的asp.net单选按钮,除了当前使用JQuery选择的那个。我试过但没有结果..!

HTML标记:

<ItemTemplate>
 <asp:RadioButton ID="rdbUser" runat="server" kID='<%# Eval("kID")%>' class="rdbUser" />
</ItemTemplate>

代码:

$(document).on("click", ".rdbUser", function() {
                var selectedRadio = $(this).attr('id');

                //var newrdo = $("input:radio.rdbUser:checked");
                //$(".rdbUser").prop('checked', false);
                //$('#' + selectedRadio).prop('checked', true);
                //$('input:radio[class=rdbUser]').prop('checked', false);
//                $('.rdbUser').removeAttr('checked');

                var kID = $(this).attr('kID');
                $("#ctl00_ContentPlaceHolder1_hdnKioskID").val(kID);

                alert("selected Radio : " + kID);
            });

在Chrome中查看SeeingMarkup:

Checked RadioButton:

<span class="rdbUser" kid="2"><input id="ctl00_ContentPlaceHolder1_GridView1_ctl03_rdbUser" type="radio" name="ctl00$ContentPlaceHolder1$GridView1$ctl03$rdbUser" value="rdbUser"></span>

未经检查的RadioButton:

<span class="rdbUser" kid="21"><input id="ctl00_ContentPlaceHolder1_GridView1_ctl05_rdbUser" type="radio" name="ctl00$ContentPlaceHolder1$GridView1$ctl05$rdbUser" value="rdbUser"></span>

4 个答案:

答案 0 :(得分:2)

试试这个,

$(document).on("click", ".rdbUser", function() {
    // to uncheck all radios which are not checked
    $("input[type=radio].rdbUser").prop("checked", false);
    $(this).prop('checked',true);// check the current one only
});

答案 1 :(得分:1)

我认为你应该使用RadioButton.GroupName属性。

  

使用GroupName属性指定一组单选按钮,以创建互斥的控件集。如果可以从可用选项列表中进行一次选择,则可以使用GroupName属性。

     

设置此属性后,一次只能选择指定组中的一个RadioButton。

但是,您可以使用jquery

尝试此代码
$(document).on("click", ".rdbUser", function() {
    //Check if this radio button is checked
    if($(this).find("input[type=radio]").is(':checked'))
    {
        //Use .not() to exclude this
        //Use .prop() to set checked to false
        $(".rdbUser").not(this).find("input[type=radio]").prop("checked", false);
    }
});

答案 2 :(得分:1)

使用change事件代替click

如果使用jquery版本&gt; 1.6使用prop否则使用attr

$(".rdbUser").change(function(){ 
   if($(this).prop("checked")){
     $("[id^='rdbUser']").not(this).prop("checked",false);
   }
});

答案 3 :(得分:0)

希望这会有所帮助! 'grdOrganization'是GridView的ID。

<script type="text/javascript">
        function ResetRadioBtns(rb) {
            var gv = document.getElementById("<%=grdOrganization.ClientID%>");
            var rbs = gv.getElementsByTagName("input");
            var row = rb.parentNode.parentNode;
            for (var i = 0; i < rbs.length; i++) {
                if (rbs[i].type == "radio") {
                    if (rbs[i].checked && rbs[i] != rb) {
                        rbs[i].checked = false;
                        break;
                    }
                }
            }
        }    

    </script>

      <asp:TemplateField ItemStyle-HorizontalAlign="Left">
                        <ItemTemplate>
                            <asp:RadioButton ID="rbtnMaster" runat="server" onclick="ResetRadioBtns(this)" />
                        </ItemTemplate>
                    </asp:TemplateField>