使用javascript启用/禁用radiobuttonlist

使用javascript启用/禁用radiobuttonlist,javascript,asp.net,Javascript,Asp.net,我正在尝试使用javascript代码启用/禁用radiobuttonlist。这个javascript可以很好地处理文本框,但是看起来它不能处理radiobuttonlist。 以下是我正在使用的代码: var chkEPM = document.getElementById("<%=chkEPM.ClientID %>"); chkEPM.onchange = function () { if (this.checked == true)

我正在尝试使用javascript代码启用/禁用radiobuttonlist。这个javascript可以很好地处理文本框,但是看起来它不能处理radiobuttonlist。 以下是我正在使用的代码:

 var chkEPM = document.getElementById("<%=chkEPM.ClientID %>");
        chkEPM.onchange = function () {
            if (this.checked == true)
                document.getElementById("<%=rblEPM.ClientID %>").disabled = false;
            else
                document.getElementById("<%=rblEPM.ClientID %>").disabled = true;
        };
var chkEPM=document.getElementById(“”);
chkEPM.onchange=函数(){
if(this.checked==true)
document.getElementById(“”).disabled=false;
其他的
document.getElementById(“”).disabled=true;
};
提前感谢您的回复,祝您度过愉快的一天/一夜

document.getElementById('rbl').setAttribute('disabled', 'disabled');
rbl
是您的RadioButton列表的ID。

您可以尝试以下方法:

function changeItemState(disable)
{
    rb = document.getElementById("<%=rblEPM.ClientID %>");

    var rbItems = rb.getElementsByTagName('input');

    for (var itemIndex = 0; itemIndex < rbItems.length; itemIndex++) 
    {
        rbItems[itemIndex].disabled = disable;
    }
}

var chkEPM = document.getElementById("<%=chkEPM.ClientID %>");
chkEPM.onchange = function () {
    if (this.checked == true)
        changeItemState(false);
    else
        changeItemState(true);
};
函数changeItemState(禁用)
{
rb=document.getElementById(“”);
var rbItems=rb.getElementsByTagName('input');
对于(var itemIndex=0;itemIndex
或者,如果可以使用jquery 1.6或更高版本,则可以执行以下操作:

$("#<%=rblEPM.ClientID %>").find('input').prop('disabled', 'true');
$(“#”).find('input').prop('disabled','true');

对于跨平台支持,您需要使用类似于以下内容的工具:

$('#RadioButtonList1').find('*').each(function () 
{ 
    $(this).attr("disabled", true); 
});

功能启用禁用收音机(复选框1){
var controls=document.getElementById(“”).getElementsByTagName(“输入”);
对于(变量i=0;i
@Laziale那么也许您应该检查
document.getElementById('radiobtnListID')
是否实际返回DOM对象。您可以使用Firebug之类的javascript调试工具。当我使用IE调试工具时,我遇到了这个错误:“无法获取属性“setAttribute”的值:object为null”@Laziale您能显示与此相关的所有代码吗?包括asp.net/html标记。@Laziale听起来像是要将其用作变量,而不是函数。碎纸机的代码以及您的代码都是正确的。很有可能您使用的浏览器太旧,不支持table Element的“disabled”属性。有一种方法我如何利用它来处理多个RadioButtonList,我可以看到elementID在函数中是硬编码的?没关系,我已经知道了,在本例中,我将变量'chkEPM'传递给函数并在那里使用:)。谢天谢地,againI在直接从
rblEPM
控件禁用它时没有问题。我想知道需要对每个儿童进行控制的问题是什么。有什么想法吗?@shreader-实际上,直接禁用rblEPM控件似乎不起作用。ASP.NET将RadioButtonList呈现为HTML表格。如果您查看,表格元素没有禁用的属性。它在IE中工作,但我只是尝试了Chrome,但它不起作用。@kevev22啊,我在IE中做的。我工作的时候会搞乱它。THX问题中没有jQuery标记。如果能解释一下为什么这个“100%工作”,这会很有帮助,如中所示。
 function EnableDisableRadio(CheckBox1) {
            var controls = document.getElementById("<%=Panel1.ClientID%>").getElementsByTagName("input");
            for (var i = 0; i < controls.length; i++)
                controls[i].disabled = CheckBox1.checked ? false : true;
        }