| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>HTMLInputElement#form</title> |
| <link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <form id="form"> |
| <p><button id="button">button</button> |
| <p><fieldset id="fieldset">fieldset</fieldset> |
| <p><input id="input"> |
| <p><object id="object">object</object> |
| <p><output id="output">output</output> |
| <p><select id="select"><option>select</option></select> |
| <p><textarea id="textarea">textarea</textarea> |
| |
| <!-- label is special: label.form is an alias for label.control.form --> |
| <p><label id="label">label</label> |
| <p><label id="label-form" form="form">label-form</label> |
| <p><label id="label-form-form2" form="form2">label-form-form2</label> |
| <p><label id="label-with-control">label-with-control <input></label> |
| <p><label id="label-for" for="control-for-label">label-for</label> <input id="control-for-label"> |
| <p> |
| <input id="input-with-form-attr-in-form" form="form2"> |
| <label id="label-for-control-form-in-form" for="input-with-form-attr-in-form">label-for-control-form-in-form</label> |
| </p> |
| </form> |
| <form id="form2"></form> |
| <p> |
| <input id="input-with-form-attr" form="form2"> |
| <label id="label-for-control-form" for="input-with-form-attr">label-for-control-form</label> |
| </p> |
| <!-- misnested tags where form-association is set by the HTML parser --> |
| <table> |
| <form id="form3"><!-- self-closes but sets the form element pointer --> |
| <tr> |
| <td><label id="label-in-table">label-in-table</label> |
| <td><label id="label-in-table-with-control">label-in-table <input></label> |
| <td><label id="label-in-table-for" for="input-in-table">label-in-table-for</label> |
| <td><input id="input-in-table"><!-- is associated with form3 --> |
| </tr> |
| </form> |
| </table> |
| <script> |
| var form; |
| setup(function() { |
| form = document.getElementById("form"); |
| form2 = document.getElementById("form2"); |
| form3 = document.getElementById("form3"); |
| if (!form || !form2 || !form3) { |
| throw new TypeError("Didn't find all forms"); |
| } |
| }); |
| |
| var listedElements = [ |
| "button", |
| "fieldset", |
| "input", |
| "object", |
| "output", |
| "select", |
| "textarea", |
| ]; |
| |
| listedElements.forEach(function(localName) { |
| test(function() { |
| var control = document.getElementById(localName); |
| assert_equals(control.form, form); |
| }, localName + ".form"); |
| }); |
| |
| // label |
| function testLabel(id, expected) { |
| test(function() { |
| var label = document.getElementById(id); |
| assert_equals(label.control && label.control.form, expected, 'Sanity check: label.control.form'); |
| assert_equals(label.form, expected, 'label.form'); |
| }, id + ".form"); |
| } |
| |
| testLabel("label", null); |
| testLabel("label-form", null); |
| testLabel("label-form-form2", null); |
| testLabel("label-with-control", form); |
| testLabel("label-for", form); |
| testLabel("label-for-control-form-in-form", form2); |
| testLabel("label-for-control-form", form2); |
| testLabel("label-in-table", null); |
| testLabel("label-in-table-with-control", form3); |
| testLabel("label-in-table-for", form3); |
| </script> |