• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 652
  • Last Modified:

how to get javascript to enable / disable radio buttons

So below are the HTML and the javascript where all I'm trying to do is enable / disable (and clear) a second set of radio buttons based on yes / no for the first ones.  I know the code runs, as I've put alerts in to make sure the test of the first ' yes / no' is being found.   (the javascript is tied to the radio buttons via the code behind:

        ClientScript.RegisterClientScriptInclude("activateImagingStage", "activateImagingStage.js")
        Imaging_Yes.Attributes.Add("onclick", "activateImagingStage();")
        Imaging_No.Attributes.Add("onclick", "activateImagingStage();")

In IE8, the second set of radio buttons gets activated / deactivated based on the first, but the second set don't get cleared when they are disabled.

In FF, nothing gets enabled / disabled.

Seems like it should be so simple...
<asp:TableRow ID="TableRow28" runat="server">
                                    <asp:TableCell  runat="server" ColumnSpan="4">22.  Did you perform imaging studies?
                                       
                                    </asp:TableCell>
                                    <asp:TableCell  CssClass="answer" runat="server">
                                        <asp:RadioButton ID="Imaging_Yes" GroupName="imaging" runat="server" />
                                    </asp:TableCell>
                                    <asp:TableCell  CssClass="answer" runat="server">
                                        <asp:RadioButton ID="Imaging_No" GroupName="imaging" runat="server" />
                                    </asp:TableCell>
                                </asp:TableRow>
                                <asp:TableRow ID="Question23a" runat="server" Enabled="false" >
                                    <asp:TableCell  runat="server" ColumnSpan="4">23.  What stage was the diagnostic imaging ordered?
                                   
                                    </asp:TableCell>
                                </asp:TableRow>
                                <asp:TableRow ID="Question23b" runat="server"  >
                                    <asp:TableCell></asp:TableCell>
                                    <asp:TableCell ID="tc8b" runat="server" ColumnSpan="4">
                                        <asp:RadioButtonList ID="Imaging_Stage" runat="server">
                                            <asp:ListItem  Value="1" runat="server" Text="Stage 0 or 1A" />
                                            <asp:ListItem  Value="2" runat="server" Text="Other" />
                                        </asp:RadioButtonList>
                                    </asp:TableCell>
                                </asp:TableRow>

Open in new window

function activateImagingStage(r) {

    var Imaging_Stage = document.getElementsByName("<%= Imaging_Stage.ClientID %>".replace(/_/g, '$'));

		if ((document.getElementById('Imaging_Yes').checked) ) {
		    document.getElementById('Question23a').disabled = false;
		    document.getElementById('Question23b').disabled = false;
		    for (var i = 0; i < Imaging_Stage.length; i++) {
		        Imaging_Stage[i].disabled = false ;
		    }
 	        }
		
 	    else {
 	        for (var i = 0; i < Imaging_Stage.length; i++) {
 	            Imaging_Stage[i].disabled = true;
 	            Imaging_Stage[i].checked = false;
		    }
    		    document.getElementById('Question23a').disabled = true;
    		    document.getElementById('Question23b').disabled = true;
 	    }
}

Open in new window

0
d2fox
Asked:
d2fox
1 Solution
 
SAMIR BHOGAYTAFreelancer and IT ConsultantCommented:
Hi, You have to use the onClientClick method of a button for calling javascript in asp.net.
0
 
d2foxAuthor Commented:
Thanks.  Ok, so I just tried that and nothing happens when I use

        ClientScript.RegisterClientScriptInclude("activateImagingStage", "activateImagingStage.js")
        Imaging_Yes.Attributes.Add("onclientclick", "activateImagingStage();")
        Imaging_No.Attributes.Add("onclientclick", "activateImagingStage();")

At least with what I have above, I know I'm getting to the javascript function.
0
 
PagodNaUtakCommented:
Try the javascript below...
function activateImagingStage(r) {  
  
    var Imaging_Stage = document.getElementsByName("<%= Imaging_Stage.ClientID %>".replace(/_/g, '$'));  
  
                if ((document.getElementById('Imaging_Yes').checked) ) {  
                    document.getElementById('Question23a').disabled = false;  
                    document.getElementById('Question23b').disabled = false;  
                    for (var i = 0; i < Imaging_Stage.length; i++) {  
                        Imaging_Stage[i].disabled = false ;  
                    }  
                }  
                  
            else {  
                for (var i = 0; i < Imaging_Stage.length; i++) {  
                 Imaging_Stage[i].checked = false;                     
                 Imaging_Stage[i].disabled = true;                     
                    }  
                    document.getElementById('Question23a').disabled = true;  
                    document.getElementById('Question23b').disabled = true;  
            }  
}

Open in new window

0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
d2foxAuthor Commented:
that works in FF but not IE.

hmmm...
0
 
PagodNaUtakCommented:
0
 
GeoffHarperCommented:
I haven't verified that your JavaScript works correctly, and I'm not an ASP.NET guy, but I know radio buttons act funny if you put only an ID on them; they need a NAME too.  See your code (modified) below.

-Geoff


<asp:TableRow ID="TableRow28" NAME="TableRow28" runat="server">
    <asp:TableCell  runat="server" ColumnSpan="4">22.  Did you perform imaging studies?
       
    </asp:TableCell>
    <asp:TableCell  CssClass="answer" runat="server">
	<asp:RadioButton ID="Imaging_Yes" NAME="Imaging_Yes" GroupName="imaging" runat="server" />
    </asp:TableCell>
    <asp:TableCell  CssClass="answer" runat="server">
	<asp:RadioButton ID="Imaging_No" NAME="Imaging_No" GroupName="imaging" runat="server" />
    </asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="Question23a" NAME="Question23a" runat="server" Enabled="false" >
    <asp:TableCell  runat="server" ColumnSpan="4">23.  What stage was the diagnostic imaging ordered?
   
    </asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="Question23b" NAME="Question23b" runat="server"  >
    <asp:TableCell></asp:TableCell>
    <asp:TableCell ID="tc8b" NAME="tc8b" runat="server" ColumnSpan="4">
	<asp:RadioButtonList ID="Imaging_Stage" NAME="Imaging_Stage" runat="server">
	    <asp:ListItem  Value="1" runat="server" Text="Stage 0 or 1A" />
	    <asp:ListItem  Value="2" runat="server" Text="Other" />
	</asp:RadioButtonList>
    </asp:TableCell>
</asp:TableRow>

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now