| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Input element's type attribute changes state</title> |
| <link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org"> |
| <link rel=help href="https://html.spec.whatwg.org/multipage/#the-input-element"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| var types = [ |
| { type: "hidden" }, |
| { type: "text", sanitizedValue: " foobar " }, |
| { type: "search", sanitizedValue: " foobar " }, |
| { type: "tel", sanitizedValue: " foobar " }, |
| { type: "url", sanitizedValue: "foobar" }, |
| { type: "email", sanitizedValue: "foobar" }, |
| { type: "password", sanitizedValue: " foobar " }, |
| { type: "datetime", sanitizedValue: "" }, |
| { type: "date", sanitizedValue: "" }, |
| { type: "month", sanitizedValue: "" }, |
| { type: "week", sanitizedValue: "" }, |
| { type: "time", sanitizedValue: "" }, |
| { type: "number", sanitizedValue: "" }, |
| { type: "range", sanitizedValue: "50" }, |
| { type: "color", sanitizedValue: "#000000" }, |
| { type: "checkbox" }, |
| { type: "radio" }, |
| { type: "file" }, |
| { type: "submit" }, |
| { type: "image" }, |
| { type: "reset" }, |
| { type: "button" } |
| ]; |
| for (var i = 0; i < types.length; i++) { |
| for (var j = 0; j < types.length; j++) { |
| if (types[i] != types[j]) { |
| test(function() { |
| var input = document.createElement("input"); |
| input.type = types[i].type; |
| if (types[i].type === "file") { |
| assert_throws("INVALID_STATE_ERR", function() { |
| input.value = " foo\rbar "; |
| }); |
| assert_equals(input.value, ""); |
| } else { |
| input.value = " foo\rbar "; |
| input.type = types[j].type; // change state |
| if (types[j].sanitizedValue || types[j].sanitizedValue === "") { |
| assert_equals(input.value, types[j].sanitizedValue, "input.value should be " + types[j].sanitizedValue + " after change of state"); |
| } else { |
| assert_equals(input.value, " foo\rbar ", "input.value should be ' foo\\rbar ' after change of state"); |
| } |
| } |
| }, "change state from " + types[i].type + " to " + types[j].type); |
| } |
| } |
| } |
| </script> |