Skip to content

Commit c46030c

Browse files
Allow <button> and <datalist> in <select>
As per the spec discussion, we are going to allow <button>s in <select> to replace the opener button and <datalist>s in <select> to replace the listbox instead of creating a <selectlist> element. whatwg/html#9799 Bug: 1511354 Change-Id: If2ee766c57faf655ab31c6714be7fd682efcc177
1 parent 7bc216e commit c46030c

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<!DOCTYPE html>
2+
<link rel=author href="mailto:[email protected]">
3+
<link rel=help href="https://github.com/whatwg/html/issues/9799">
4+
<script src="/resources/testharness.js"></script>
5+
<script src="/resources/testharnessreport.js"></script>
6+
7+
<select id=s1>
8+
<div>div 1</div>
9+
<button>button</button>
10+
<div>div 2</div>
11+
<datalist>
12+
<option>option</option>
13+
</datalist>
14+
<div>div 3</div>
15+
</select>
16+
17+
<select id=s2>
18+
<div>div 1</div>
19+
<button>
20+
<span>level 1</span>
21+
<button>
22+
<span>level 2</span>
23+
</button>
24+
</button>
25+
<div>div 2</div>
26+
</select>
27+
28+
<select id=s3>
29+
<button>button
30+
</select>
31+
32+
<select id=s4>
33+
<datalist>datalist
34+
</select>
35+
36+
<select id=s5>
37+
<button>
38+
<select></select>
39+
</button>
40+
</select>
41+
42+
<script>
43+
test(() => {
44+
assert_equals(document.getElementById('s1').innerHTML, `
45+
div 1
46+
<button>button</button>
47+
div 2
48+
<datalist>
49+
<option>option</option>
50+
</datalist>
51+
div 3
52+
`);
53+
}, '<button>s and <datalist>s should be allowed in <select>.');
54+
55+
test(() => {
56+
assert_equals(document.getElementById('s2').innerHTML, `
57+
div 1
58+
<button>
59+
<span>level 1</span>
60+
</button><button>
61+
<span>level 2</span>
62+
</button>
63+
\n div 2
64+
`);
65+
}, 'Nested <button>s in <select> should be flattened out.');
66+
67+
test(() => {
68+
assert_equals(document.getElementById('s3').innerHTML, `
69+
<button>button
70+
</button>`);
71+
}, '</select> should close <button>.');
72+
73+
test(() => {
74+
assert_equals(document.getElementById('s4').innerHTML, `
75+
<datalist>datalist
76+
</datalist>`);
77+
}, '</select> should close <datalist>.');
78+
79+
test(() => {
80+
assert_equals(document.getElementById('s5').innerHTML, `
81+
<button>
82+
</button>`);
83+
}, '<select> in <button> in <select> should remove inner <select>.');
84+
</script>

0 commit comments

Comments
 (0)