我在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>
答案 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>