5

I have two radio buttons and a drop down box as you can see below. What I want to do is: 1. While no is checked, either hide, or grey out the drop down box, and 2. While yes is checked, show the drop down box.

Any pointers would be appreciated!

<td colspan="4">
<input name="discount" type="radio" id="Yes" value="Yes" />Yes
<input name="discount" type="radio" id="No" value="No" checked="checked" />No<br />  
<select class="purple" name="discountselection" id="discountselection">
<option value="1 Year" selected="selected">1 Year</option>
<option value="2 Years">2 Years</option>
<option value="3 Years">3 Years</option>
</select>                  
</td>
109221793
  • 16,477
  • 38
  • 108
  • 160

6 Answers6

18
   <script type="text/javascript">
                   $("#Yes").click(function() {
                        $("#discountselection").attr("disabled", false);
                        //$("#discountselection").show(); //To Show the dropdown
                    });
                    $("#No").click(function() {
                        $("#discountselection").attr("disabled", true);
                        //$("#discountselection").hide();//To hide the dropdown
                    });
    </script>

Also, set the dropdown's display style, or disabled property in HTML based on your default radiobutton selected on page load.

 <select  name="discountselection" id="discountselection" disabled="disabled">
    <option value="1 Year" selected="selected">1 Year</option>
    <option value="2 Years">2 Years</option>
    <option value="3 Years">3 Years</option>
    </select>
George Stocker
  • 57,289
  • 29
  • 176
  • 237
Siva Gopal
  • 3,474
  • 1
  • 25
  • 22
3
$('input:radio[name="discount"]').change(function() {
    if ($(this).val()=='Yes') {
        $('#discountselection').attr('disabled',true);
    } else
        $('#discountselection').removeAttr('disabled');
});​

http://jsfiddle.net/uSmVD/

Robert
  • 21,110
  • 9
  • 55
  • 65
2

You need to set your select control to disabled and use a similar code to this one:

​$(function(){
    $('input:radio[name=discount]').one('change', function(){
        $('.purple').removeAttr('disabled');
    });
});​

See http://www.jsfiddle.net/A3BuQ/6/

Ref.: .one(), .removeAttr()

jAndy
  • 231,737
  • 57
  • 305
  • 359
  • I do have other radio buttons on the page. Will this affect those? – 109221793 Sep 13 '10 at 14:41
  • @TaraWalsh: yes it would. I adapted the code to make it more specific. – jAndy Sep 13 '10 at 14:43
  • Cool, I have placed this javascript code at the top of my HTML document like so: Is this the correct way to use this code? Right now it doesn't seem to work. – 109221793 Sep 13 '10 at 14:45
  • This won't re-disable if they change back. – Robert Sep 13 '10 at 14:46
1

You can hide it with jQuery:

$(document).ready(function(){     

$('#discountselection').hide();

        $('#No').click(function(){
            $('#discountselection').hide();
        });

        $('#Yes').click(function(){
            $('#discountselection').show();
        });
});

check it: http://www.jsfiddle.net/cFUsU/

UPDATE: added $(document).ready(); method to start set this code to action when the page is ready

d2burke
  • 4,081
  • 3
  • 39
  • 51
1
​$(function(){
  $('input:radio').bind('change', function(){
     $('#discountselection').attr('disabled', !$("#yes").is(":checked"));
  });
});​
Flo Edelmann
  • 2,573
  • 1
  • 20
  • 33
1

Would this do it?

$('input:radio').bind('change', function(){
    $('select').attr('disabled', $(this).val() == "No");
});

Tested, works great. Good luck.

mkoistinen
  • 7,724
  • 3
  • 41
  • 56
  • this is trouble. not removing the `disabled` attribute could case some browser to still disable the element, even when it's value is 0. Actually it doesn't matter which value you set, as long as the attribute `disabled` is present, an element must get disabled (w3c). – jAndy Sep 13 '10 at 15:16