RESOLVED FIXED 53860
style.display affecting the initial selectedIndex value of a <select> when it's multiple attribute is set programatically
https://bugs.webkit.org/show_bug.cgi?id=53860
Summary style.display affecting the initial selectedIndex value of a <select> when it...
Darth
Reported 2011-02-05 15:17:20 PST
Created attachment 81378 [details] testcase Downstream bug - http://code.google.com/p/chromium/issues/detail?id=71398 See the attached html. It has a simple <select> element which has a display:none on it. It does not have multiple=true on it initially, which is set later programmatically onload. By default single selects as above have a selectedIndex = 0 as per w3c spec. When this select's mutiple attribute is set to true via javascript, it should retain its selectedIndex = 0. So converting that select to multiple select should still output selectedIndex = 0. However this doesn't work as expected in webkit when there is display:none on the select. Webkit outputs -1 while FF, IE, Opera output 0. Removal of the display:none gives consistent behavior among all browsers. So it seems the display style is affecting the selects initial selectedIndex. Also, when the display is none, and selectedIndex is accessed prior to making multiple = true, then it works fine.
Attachments
testcase (885 bytes, text/html)
2011-02-05 15:17 PST, Darth
no flags
Patch (5.27 KB, patch)
2011-03-03 15:35 PST, Emil A Eklund
dglazkov: review+
dglazkov: commit-queue-
Patch (5.48 KB, patch)
2011-03-08 14:15 PST, Emil A Eklund
no flags
Emil A Eklund
Comment 1 2011-03-03 15:35:29 PST
Created attachment 84640 [details] Patch This patch changes the behavior of <select> elements with display: none to match the behavior of elements that are displayed.
Dimitri Glazkov (Google)
Comment 2 2011-03-08 13:58:17 PST
Comment on attachment 84640 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=84640&action=review engage the tractor beam. > Source/WebCore/ChangeLog:5 > + style.display affecting the initial selectedIndex value of a <select> when it's multiple attribute is set programatically it's -> its > Source/WebCore/html/HTMLSelectElement.cpp:437 > + int oldSelectedIndex = selectedIndex(); Can you add a comment on why we're doing this here? Out of context, the reasoning behind this line is hard to guess.
Emil A Eklund
Comment 3 2011-03-08 14:15:22 PST
Created attachment 85089 [details] Patch Made suggested changes, PTAL.
Dimitri Glazkov (Google)
Comment 4 2011-03-10 11:47:40 PST
Comment on attachment 85089 [details] Patch excellent!
WebKit Commit Bot
Comment 5 2011-03-10 20:23:13 PST
Comment on attachment 85089 [details] Patch Clearing flags on attachment: 85089 Committed r80808: <http://trac.webkit.org/changeset/80808>
Note You need to log in before you can comment on or make changes to this bug.