1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
<!DOCTYPE HTML>
<title>Input element programmatic selection support</title>
<link rel="author" title="yaycmyk" href="mailto:evan@yaycmyk.com">
<link rel="help" href="https://html.spec.whatwg.org/multipage/forms.html#dom-textarea/input-select">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
/* all textual, non-hidden inputs support .select() */
test(function() {
var valid = [
"text",
"search",
"url",
"tel",
"email",
"password",
"date",
"month",
"week",
"time",
"datetime-local",
"number",
"color",
"file",
];
var invalid = [
"hidden",
"range",
"checkbox",
"radio",
"submit",
"image",
"reset",
"button"
];
valid.forEach(function(type) {
test(function() {
var input = document.createElement("input");
var a;
input.type = type;
assert_equals(input.type, type, "the given input type is not supported");
input.select();
}, "input type " + type + " should support the select() method");
});
invalid.forEach(function(type) {
test(function() {
var input = document.createElement("input");
input.type = type;
assert_equals(input.type, type, "the given input type is not supported");
assert_throws("INVALID_STATE_ERR", function() { input.select(); });
}, "input type " + type + " should not support the select() method");
});
});
/* only certain input types are allowed to have a variable-length selection */
test(function() {
var valid = [
"text",
"search",
"url",
"tel",
"password"
];
var invalid = [
"hidden",
"email",
"date",
"month",
"week",
"time",
"datetime-local",
"number",
"range",
"color",
"checkbox",
"radio",
"file",
"submit",
"image",
"reset",
"button"
];
valid.forEach(function(type) {
test(function() {
var input = document.createElement("input");
var a;
input.type = type;
assert_equals(input.type, type, "the given input type is not supported");
a = input.selectionStart;
input.selectionStart = 0;
a = input.selectionEnd;
input.selectionEnd = 0;
a = input.selectionDirection;
input.selectionDirection = "none";
input.setSelectionRange(0, 0);
input.setRangeText('', 0, 0);
}, "input type " + type + " should support all selection attributes and methods");
});
invalid.forEach(function(type) {
test(function() {
var input = document.createElement("input");
input.type = type;
assert_equals(input.type, type, "the given input type is not supported");
assert_equals(input.selectionStart, null, 'getting input.selectionStart');
assert_throws("INVALID_STATE_ERR", function() { input.selectionStart = 0; });
assert_equals(input.selectionEnd, null, 'getting input.selectionEnd');
assert_throws("INVALID_STATE_ERR", function() { input.selectionEnd = 0; });
assert_equals(input.selectionDirection, null, 'getting input.selectionDirection');
assert_throws("INVALID_STATE_ERR", function() { input.selectionDirection = "none"; });
assert_throws("INVALID_STATE_ERR", function() { input.setSelectionRange(0, 0); });
assert_throws("INVALID_STATE_ERR", function() { input.setRangeText('', 0, 0); });
}, "input type " + type + " should not support variable-length selections");
});
});
</script>
|