select-ask-for-reset.html (2657B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>HTMLSelectElement ask for reset</title> 4 <link rel="author" title="Dongie Agnir" href="dongie.agnir@gmail.com"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <div id=log></div> 8 <script> 9 test(function() { 10 var select = makeSelect(5); 11 12 select.children[4].selected = true; 13 unselectedExcept(select, 4); 14 15 select.children[4].remove(); 16 unselectedExcept(select, 0); // remove selected node, should default to first 17 18 select.children[3].selected = true; 19 20 select.children[0].remove(); 21 unselectedExcept(select, 2); // last node still selected 22 23 select.size = 2; 24 select.children[2].remove(); 25 26 unselectedExcept(select, null); 27 }, "ask for reset on node remove, non multiple."); 28 29 test(function() { 30 var select = makeSelect(3); 31 select.children[1].selected = true; 32 33 // insert selected option, should remain selected 34 var opt4 = document.createElement("option"); 35 opt4.selected = true; 36 select.appendChild(opt4); 37 unselectedExcept(select, 3); 38 39 // insert unselected, 3 should remain selected 40 var opt5 = document.createElement("option"); 41 select.appendChild(opt5); 42 unselectedExcept(select, 3); 43 }, "ask for reset on node insert, non multiple."); 44 45 test(function() { 46 var select = makeSelect(3); 47 48 var options = select.children; 49 50 // select options from first to last 51 for (var i = 0; i < options.length; ++i) { 52 options[i].selected = true; 53 unselectedExcept(select, i); 54 } 55 56 // select options from last to first 57 for (var i = options.length - 1; i >= 0; --i) { 58 options[i].selected = true; 59 unselectedExcept(select, i); 60 } 61 62 options[2].selected = true; 63 options[2].selected = false; // none selected 64 unselectedExcept(select, 0); 65 66 // disable first so option at index 1 is first eligible 67 options[0].disabled = true; 68 options[2].selected = true; 69 options[2].selected = false; // none selected 70 unselectedExcept(select, 1); 71 72 select.size = 2; 73 options[1].selected = false; 74 unselectedExcept(select, null); // size > 1 so should not default to any 75 }, "change selectedness of option, non multiple."); 76 77 78 function unselectedExcept(sel, opt) { 79 for (var i = 0; i < sel.children.length; ++i) { 80 if (i != opt) { 81 assert_false(sel.children[i].selected, "option should not be selected."); 82 } 83 if (opt != null) { 84 assert_true(sel.children[opt].selected, "option should be selected."); 85 } 86 } 87 } 88 89 function makeSelect(n) { 90 var sel = document.createElement("select"); 91 for (var i = 0; i < n; ++i) { 92 opt = document.createElement("option"); 93 sel.appendChild(opt); 94 } 95 return sel; 96 } 97 </script>