Bug 16191

Summary: REGRESSION: cannot tab to radio input after setting checked to false
Product: WebKit Reporter: Brian <bcarter>
Component: New BugsAssignee: Darin Adler <darin>
Status: RESOLVED FIXED    
Severity: Major    
Priority: P1    
Version: 523.x (Safari 3)   
Hardware: All   
OS: All   
Attachments:
Description Flags
example page
none
patch adele: review+

Description Brian 2007-11-29 09:42:33 PST
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Safari v3 bug</title>

<!--

Bug: cannot tab to checked false radio input

Safari v3.0.4 (523.12.9) Windows XP
Safari v3.0.4 (523.12) Mac OS X 10.4.11

To reproduce:
Press TAB to cycle through radio inputs.
Select one radio with SPACE or mouse click.
Continue to press TAB.
Notice TAB will now skip the input.

Expected:
checked false inputs with unique IDs should
always be in the TAB sequence.

works as expected in Safari v2.0.4. and
current versions of Opera, Firefox, and IE.

-->

<script language="JavaScript" type="text/javascript">

function initFocus() {

var myInputs = document.getElementsByTagName('INPUT');
for (var i=0; i<myInputs.length; i++) {

myInputs[i].onclick=function(){

	var myFieldset = this.parentNode.parentNode;
	var myInputs = myFieldset.getElementsByTagName('INPUT');
	for (var i=0; i<myInputs.length; i++) {
	myInputs[i].checked=false;
	}
	//this.checked=true;
}}}

</script>
</head>
<body onload="initFocus();">
<form action="">

	<fieldset style="margin-left:1em;border:0">
	<input type="radio" name="input-p1q1-1" />answer1<br />
	<input type="radio" name="input-p1q1-2" />answer2<br />
	<input type="radio" name="input-p1q1-3" />answer3<br />
	<input type="radio" name="input-p1q1-4" />answer4<br />
	</fieldset>

</form>
</body>
</html>
Comment 1 Brian 2007-11-29 09:44:04 PST
Created attachment 17594 [details]
example page
Comment 2 Darin Adler 2007-11-29 13:06:43 PST
I'll take care of this. It's a bug in HTMLInputElement::setChecked when the new value is false.
Comment 3 Darin Adler 2007-11-29 16:42:15 PST
Created attachment 17598 [details]
patch
Comment 4 Darin Adler 2007-11-29 16:54:19 PST
Committed revision 28212.