form-validation-validity-valueMissing.html (10656B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>The constraint validation API Test: element.validity.valueMissing</title> 4 <link rel="author" title="Intel" href="http://www.intel.com/"> 5 <link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-validitystate-valuemissing"> 6 <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-constraint-validation-api"> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="support/validator.js"></script> 10 <div id="log"></div> 11 <form> 12 <input id="messagetest" type="checkbox" required="" disabled=""> 13 </form> 14 15 <script> 16 var testElements = [ 17 { 18 tag: "input", 19 types: ["text", "search", "tel", "url", "email", "password"], 20 testData: [ 21 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, 22 {conditions: {required: true, value: "abc"}, expected: false, name: "[target] The value is not empty and required is true"}, 23 {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value is empty and required is true"} 24 ] 25 }, 26 { 27 tag: "input", 28 types: ["datetime-local"], 29 testData: [ 30 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, 31 {conditions: {required: true, value: "2000-12-10T12:00:00"}, expected: false, name: "[target] Valid local date and time string(2000-12-10T12:00:00)"}, 32 {conditions: {required: true, value: "2000-12-10 12:00"}, expected: false, name: "[target] Valid local date and time string(2000-12-10 12:00)"}, 33 {conditions: {required: true, value: "1979-10-14T12:00:00.001"}, expected: false, name: "[target] Valid local date and time string(1979-10-14T12:00:00.001)"}, 34 {conditions: {required: true, value: 1234567}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a number(1234567)"}, 35 {conditions: {required: true, value: new Date()}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a Date object"}, 36 {conditions: {required: true, value: "1979-10-99 99:99"}, expected: true, expectedImmutable: false, name: "[target] Invalid local date and time string(1979-10-99 99:99)"}, 37 {conditions: {required: true, value: "1979-10-14 12:00:00"}, expected: false, name: "[target] Valid local date and time string(1979-10-14 12:00:00)"}, 38 {conditions: {required: true, value: "2001-12-21 12:00"}, expected: true, expectedImmutable: false, name: "[target] Invalid local date and time string(2001-12-21 12:00)-two white space"}, 39 {conditions: {required: true, value: "abc"}, expected: true, expectedImmutable: false, name: "[target] the value attribute is a string(abc)"}, 40 {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value attribute is empty string"} 41 ] 42 }, 43 { 44 tag: "input", 45 types: ["date"], 46 testData: [ 47 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, 48 {conditions: {required: true, value: "2000-12-10"}, expected: false, name: "[target] Valid date string(2000-12-10)"}, 49 {conditions: {required: true, value: "9999-01-01"}, expected: false, name: "[target] Valid date string(9999-01-01)"}, 50 {conditions: {required: true, value: 1234567}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a number(1234567)"}, 51 {conditions: {required: true, value: new Date()}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a Date object"}, 52 {conditions: {required: true, value: "9999-99-99"}, expected: true, expectedImmutable: false, name: "[target] Invalid date string(9999-99-99)"}, 53 {conditions: {required: true, value: "37/01/01"}, expected: true, expectedImmutable: false, name: "[target] Invalid date string(37-01-01)"}, 54 {conditions: {required: true, value: "2000/01/01"}, expected: true, expectedImmutable: false, name: "[target] Invalid date string(2000/01/01)"}, 55 {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value attribute is empty string"} 56 ] 57 }, 58 { 59 tag: "input", 60 types: ["time"], 61 testData: [ 62 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, 63 {conditions: {required: true, value: "12:00:00"}, expected: false, name: "[target] Validtime string(12:00:00)"}, 64 {conditions: {required: true, value: "12:00"}, expected: false, name: "[target] Validtime string(12:00)"}, 65 {conditions: {required: true, value: "12:00:00.001"}, expected: false, name: "[target] Valid time string(12:00:60.001)"}, 66 {conditions: {required: true, value: "12:00:00.01"}, expected: false, name: "[target] Valid time string(12:00:60.01)"}, 67 {conditions: {required: true, value: "12:00:00.1"}, expected: false, name: "[target] Valid time string(12:00:60.1)"}, 68 {conditions: {required: true, value: 1234567}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a number(1234567)"}, 69 {conditions: {required: true, value: new Date()}, expected: true, expectedImmutable: false, name: "[target] The value attribute is a time object"}, 70 {conditions: {required: true, value: "25:00:00"}, expected: true, expectedImmutable: false, name: "[target] Invalid time string(25:00:00)"}, 71 {conditions: {required: true, value: "12:60:00"}, expected: true, expectedImmutable: false, name: "[target] Invalid time string(12:60:00)"}, 72 {conditions: {required: true, value: "12:00:60"}, expected: true, expectedImmutable: false, name: "[target] Invalid time string(12:00:60)"}, 73 {conditions: {required: true, value: "12:00:00:001"}, expected: true, expectedImmutable: false, name: "[target] Invalid time string(12:00:00:001)"}, 74 {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value attribute is empty string"} 75 ] 76 }, 77 { 78 tag: "input", 79 types: ["number"], 80 testData: [ 81 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, 82 {conditions: {required: true, value: "123"}, expected: false, name: "[target] Value is an integer with a leading symbol '+'"}, 83 {conditions: {required: true, value: "-123.45"}, expected: false, name: "[target] Value is a number with a '-' symbol"}, 84 {conditions: {required: true, value: "123.01e-10"}, expected: false, name: "[target] Value is a number in scientific notation form(e is in lowercase)"}, 85 {conditions: {required: true, value: "123.01E+10"}, expected: false, name: "[target] Value is a number in scientific notation form(E is in uppercase)"}, 86 {conditions: {required: true, value: "-0"}, expected: false, name: "[target] Value is -0"}, 87 {conditions: {required: true, value: " 123 "}, expected: true, expectedImmutable: false, name: "[target] Value is a number with some white spaces"}, 88 {conditions: {required: true, value: Math.pow(2, 1024)}, expected: true, expectedImmutable: false, name: "[target] Value is Math.pow(2, 1024)"}, 89 {conditions: {required: true, value: Math.pow(-2, 1024)}, expected: true, expectedImmutable: false, name: "[target] Value is Math.pow(-2, 1024)"}, 90 {conditions: {required: true, value: "abc"}, expected: true, expectedImmutable: false, name: "[target] Value is a string that cannot be converted to a number"}, 91 {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value attribute is empty string"} 92 ] 93 }, 94 { 95 tag: "input", 96 types: ["checkbox"], 97 testData: [ 98 {conditions: {required: false, checked: false, name: "test1"}, expected: false, name: "[target] The required attribute is not set"}, 99 {conditions: {required: true, checked: true, name: "test2"}, expected: false, name: "[target] The checked attribute is true"}, 100 {conditions: {required: true, checked: false, name: "test3"}, expected: true, name: "[target] The checked attribute is false"} 101 ] 102 }, 103 { 104 tag: "input", 105 types: ["radio"], 106 testData: [ 107 {conditions: {required: false, checked: false, name: "test4"}, expected: false, name: "[target] The required attribute is not set"}, 108 {conditions: {required: true, checked: true, name: "test5"}, expected: false, name: "[target] The checked attribute is true"}, 109 {conditions: {required: true, checked: false, name: "test6"}, expected: true, name: "[target] The checked attribute is false"}, 110 {conditions: {required: true, checked: false, name: ""}, expected: false, name: "[target] The checked attribute is false and the name attribute is empty"} 111 ] 112 }, 113 { 114 tag: "input", 115 types: ["file"], 116 testData: [ 117 {conditions: {required: false, files: null}, expected: false, name: "[target] The required attribute is not set"}, 118 {conditions: {required: true, files: null}, expected: true, name: "[target] The Files attribute is null"} 119 //ToDo: Add a case to test the files is not null 120 ] 121 }, 122 { 123 tag: "select", 124 types: [], 125 testData: [ 126 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, 127 {conditions: {required: true, value: 1}, expected: false, name: "[target] Selected the option with value equals to 1"}, 128 {conditions: {required: true, value: ""}, expected: true, name: "[target] Selected the option with value equals to empty"} 129 ] 130 }, 131 { 132 tag: "textarea", 133 types: [], 134 testData: [ 135 {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"}, 136 {conditions: {required: true, value: "abc"}, expected: false, name: "[target] The value is not empty"}, 137 {conditions: {required: true, value: ""}, expected: true, expectedImmutable: false, name: "[target] The value is empty"} 138 ] 139 } 140 ]; 141 142 validator.run_test(testElements, "valueMissing"); 143 144 test(() => { 145 assert_equals(document.getElementById("messagetest").validationMessage, ''); 146 }, 'validationMessage should return empty string when willValidate is false and valueMissing is true'); 147 </script>