Skip to content

Commit 7e54533

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 32017da commit 7e54533

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
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+
<select id=s6>
43+
<button>
44+
<div>
45+
<select>
46+
</select>
47+
48+
<script>
49+
test(() => {
50+
assert_equals(document.getElementById('s1').innerHTML, `
51+
div 1
52+
<button>button</button>
53+
div 2
54+
<datalist>
55+
<option>option</option>
56+
</datalist>
57+
div 3
58+
`);
59+
}, '<button>s and <datalist>s should be allowed in <select>.');
60+
61+
test(() => {
62+
assert_equals(document.getElementById('s2').innerHTML, `
63+
div 1
64+
<button>
65+
<span>level 1</span>
66+
</button><button>
67+
<span>level 2</span>
68+
</button>
69+
\n div 2
70+
`);
71+
}, 'Nested <button>s in <select> should be flattened out.');
72+
73+
test(() => {
74+
assert_equals(document.getElementById('s3').innerHTML, `
75+
<button>button
76+
</button>`);
77+
}, '</select> should close <button>.');
78+
79+
test(() => {
80+
assert_equals(document.getElementById('s4').innerHTML, `
81+
<datalist>datalist
82+
</datalist>`);
83+
}, '</select> should close <datalist>.');
84+
85+
test(() => {
86+
assert_equals(document.getElementById('s5').innerHTML, `
87+
<button>
88+
</button>`);
89+
}, '<select> in <button> in <select> should remove inner <select>.');
90+
91+
test(() => {
92+
assert_equals(document.getElementById('s6').innerHTML, `
93+
<button>
94+
<div>
95+
</div></button>`);
96+
}, '<select> in <select><button><div> should remove inner <select>.');
97+
</script>

0 commit comments

Comments
 (0)