Link to home
Start Free TrialLog in
Avatar of d2fox
d2fox

asked on

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

Avatar of SAMIR BHOGAYTA
SAMIR BHOGAYTA
Flag of India image

Hi, You have to use the onClientClick method of a button for calling javascript in asp.net.
Avatar of d2fox
d2fox

ASKER

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.
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

Avatar of d2fox

ASKER

that works in FF but not IE.

hmmm...
ASKER CERTIFIED SOLUTION
Avatar of GeoffHarper
GeoffHarper
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial