number-constraint-validation.html (1810B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Form input type=number constraint validation</title> 4 <link rel="author" title="Adam Vandolder" href="mailto:avandolder@mozilla.com"> 5 <link rel=help href="https://html.spec.whatwg.org/multipage/#number-state-(type=number)"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-vendor.js"></script> 10 <div id="log"></div> 11 <input type="number"> 12 <script> 13 const input = document.querySelector("input"); 14 const invalidInputNumber = "1.e"; 15 const invalidSetNumber = "1."; 16 17 promise_test(async () => { 18 await test_driver.click(input); 19 await test_driver.send_keys(input, invalidInputNumber); 20 assert_equals(input.value.length, 0); 21 assert_true(input.validity.badInput); 22 }, "Unparsable number user input triggers sanitization and causes badInput to be set."); 23 24 promise_test(async () => { 25 input.value = invalidInputNumber; 26 assert_equals(input.value.length, 0); 27 assert_false(input.validity.badInput); 28 }, "Setting .value to an unparsable number triggers sanitization but doesn't set badInput."); 29 30 promise_test(async () => { 31 await test_driver.click(input); 32 await test_driver.send_keys(input, invalidSetNumber); 33 assert_equals(input.value, "1"); 34 assert_false(input.validity.badInput); 35 }, "Users inputting a parsable but invalid floating point number doesn't trigger sanitization and doesn't set badInput."); 36 37 promise_test(async () => { 38 input.value = invalidSetNumber; 39 assert_equals(input.value.length, 0); 40 assert_false(input.validity.badInput); 41 }, "Setting .value to a parsable but invalid floating point number triggers sanitization but doesn't set badInput."); 42 </script>