Jquery If radio button is checked

I have these 2 radio buttons at the moment so that the user can decide whether they need postage included in the price or not:

 type="radio" id="postageyes" name="postage" value="Yes" /> Yes
 type="radio" id="postageno" name="postage" value="No" /> No

I need to use Jquery to check if the 'yes' radio button is checked, and if it is, do an append function. Could someone tell me how I'd do this please?

Thanks for any help


I've updated my code to this, but it's not working. Am I doing something wrong?


    if($(this).val() == 'Yes'){


// ]]>

asked May 8, 2015 in JAVASCRIPT by rajesh
0 votes

3 Answers

0 votes
        if ($(this).is(':checked') && $(this).val() == 'Yes') {
            // append goes here
Or, the above - again - using a little less superfluous jQuery:

        if (this.checked && this.value == 'Yes') {
            // note that, as per comments, the 'changed'
            // will *always* be checked, as the change
            // event only fires on checking an , not
            // on un-checking it.
            // append goes here
Revised (improved-some) jQuery:

// defines a div element with the text "You're appendin'!"
// assigns that div to the variable 'appended'
var appended = $('
').text("You're appendin'!");

// assigns the 'id' of "appended" to the 'appended' element
appended.id = 'appended';

// 1. selects '' elements with the 'name' attribute of 'postage'
// 2. assigns the onChange/onchange event handler

        // checks that the clicked radio button is the one of value 'Yes'
        // the value of the element is the one that's checked (as noted by @shef in comments)
        if ($(this).val() == 'Yes') {

            // appends the 'appended' element to the 'body' tag
        else {

            // if it's the 'No' button removes the 'appended' element.

Show code snippet


JS Fiddle demo.

And, further, a mild update (since I was editing to include Snippets as well as the JS Fiddle links), in order to wrap the elements with
answered May 8, 2015 by rajesh
0 votes
Also, if you only need to show content depending on which element is checked by the user, a slight update that will toggle visibility using an explicit show/hide:

// caching a reference to the dependant/conditional content:
var conditionalContent = $('#conditional'),
    // caching a reference to the group of inputs, since we're using that
    // same group twice:
    group = $('input[type=radio][name=postage]');

// binding the change event-handler:
group.change(function() {
  // toggling the visibility of the conditionalContent, which will
  // be shown if the assessment returns true and hidden otherwise:
  conditionalContent.toggle(group.filter(':checked').val() === 'Yes');
  // triggering the change event on the group, to appropriately show/hide
  // the conditionalContent on page-load/DOM-ready:
" rel="nofollow" target="_blank">https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">


This should only show when the 'Yes' radio <input> element is checked.

answered May 8, 2015 by rajesh
0 votes

And, finally, using just CSS:


/* setting the default of the conditionally-displayed content
to hidden: */
#conditional {
  display: none;

/* if the #postageyes element is checked then the general sibling of
that element, with the id of 'conditional', will be shown: */
#postageyes:checked ~ #conditional {
  display: block;

 type="radio" id="postageyes" name="postage" value="Yes" />
 type="radio" id="postageno" name="postage" value="No" />

This should only show when the 'Yes' radio <input> element is checked.

answered May 8, 2015 by rajesh