Radio Button "Checked=checked" not changing when option changed
Asked Answered
I

1

22

I've created a basic 2 radio button form as seen in my example below.

Observing the browser rendering, we see item 1 selected. We inspect item 1 and 2.

When I click item 2, I expect item 1's checked=checked to be remove. I expect item 2 receive the attribute checked=checked.

Is this not the expected behavior?

<div>
    <span>Item 1</span>
    <input type="radio" name="radio1" id="radio1" checked="checked" />
</div>

<div>
    <span>Item 2</span>
    <input type="radio" name="radio1" class="checkbox" id="radio2" />
</div>

http://jsfiddle.net/chrimbus/ZTE7R/1/

Impale answered 24/7, 2013 at 14:4 Comment(3)
@quentin and others: Your replies are great, does this confirm then that the expected behavior of an attribute "checked" will not automatically update without the use of Javascript?Impale
I was able to style the "checked" radio button and label by applying styles using a pseudo selector :checked. This works for IE9+, Chrome and Firefox. jsfiddle.net/sXjyL/4Impale
A more clear answer as to how to work with radio buttons using jQuery is on SO here: #596851Leadsman
K
24

The checked attribute specifies the default checked radio button, not the currently checked one.

See this example code:

function setChecked() {
  document.getElementById('x1').removeAttribute('checked');
  document.getElementById('x2').setAttribute('checked', 'checked');
}

document.querySelector('[type=button]').addEventListener('click', setChecked);
<form>
  <input name="x" type="radio" id="x1" checked>
  <input name="x" type="radio" id="x2">
  <button type="button">Switch</button>
  <button type="reset">Reset</button>
</form>

Click the second radio button, then click Reset. Then click the second radio button again, then Switch, then Reset.

The checked property will give the current checked state of a radio button.

Checked attribute vs checked property

Koblick answered 24/7, 2013 at 14:6 Comment(3)
Was waiting for that property vs attribute distinction :)Giannini
@quentin Your replies are great, does this confirm then that the expected behavior of an attribute "checked" will not automatically update without the use of Javascript?Impale
Yes. Only JavaScript can change the checked attribute once the page has loaded.Koblick

© 2022 - 2024 — McMap. All rights reserved.