nthChild
nthChild

Reputation: 699

Radio Button "Checked=checked" not changing when option changed

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/

Upvotes: 22

Views: 29573

Answers (1)

Quentin
Quentin

Reputation: 944470

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

Upvotes: 24

Related Questions