| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description("This test examines the order of the elements attribute of a form element with form-associated elements with form attribute or witout form attibute."); |
| |
| var container = document.createElement('div'); |
| document.body.appendChild(container); |
| |
| debug(''); |
| debug('- Test for the case where some elements have form attribute but some others not.'); |
| container.innerHTML = '<form id=owner>' + |
| ' <input id=input1 name=victim />' + |
| ' <input id=input2 name=victim form=owner />' + |
| ' <input id=input3 name=victim />' + |
| '</form>'; |
| var owner = document.getElementById('owner'); |
| var input1 = document.getElementById('input1'); |
| var input2 = document.getElementById('input2'); |
| var input3 = document.getElementById('input3'); |
| shouldBe('owner.elements.length', '3'); |
| shouldBe('owner.elements[0]', 'input1'); |
| shouldBe('owner.elements[1]', 'input2'); |
| shouldBe('owner.elements[2]', 'input3'); |
| |
| container.innerHTML = '<form id=owner>' + |
| ' <input id=input1 name=victim form=owner />' + |
| ' <input id=input2 name=victim />' + |
| ' <input id=input3 name=victim form=owner />' + |
| '</form>'; |
| owner = document.getElementById('owner'); |
| input1 = document.getElementById('input1'); |
| input2 = document.getElementById('input2'); |
| input3 = document.getElementById('input3'); |
| shouldBe('owner.elements.length', '3'); |
| shouldBe('owner.elements[0]', 'input1'); |
| shouldBe('owner.elements[1]', 'input2'); |
| shouldBe('owner.elements[2]', 'input3'); |
| |
| debug(''); |
| debug('- Test for inserting/removing a form-associated element without form attribute.'); |
| container.innerHTML = '<input name=victim id=before form=owner />' + |
| '<form id=owner action= method=GET>' + |
| ' <input name=victim id=inner />' + |
| '</form>' + |
| '<input name=victim id=after form=owner />'; |
| owner = document.getElementById('owner'); |
| var before = document.getElementById('before'); |
| var inner = document.getElementById('inner'); |
| var after = document.getElementById('after'); |
| |
| var inner2 = document.createElement('input'); |
| inner2.name = 'victim'; |
| inner2.id = 'inner2'; |
| owner.appendChild(inner2); |
| shouldBe('owner.elements.length', '4'); |
| shouldBe('owner.elements[0]', 'before'); |
| shouldBe('owner.elements[1]', 'inner'); |
| shouldBe('owner.elements[2]', 'inner2'); |
| shouldBe('owner.elements[3]', 'after'); |
| |
| owner.removeChild(inner); |
| owner.insertBefore(inner, inner2); |
| shouldBe('owner.elements.length', '4'); |
| shouldBe('owner.elements[0]', 'before'); |
| shouldBe('owner.elements[1]', 'inner'); |
| shouldBe('owner.elements[2]', 'inner2'); |
| shouldBe('owner.elements[3]', 'after'); |
| |
| debug(''); |
| debug('- Test for inserting/removing a form-associated element with form attribute.'); |
| var before2 = document.createElement('input'); |
| before2.name = 'victim'; |
| before2.id = 'before2'; |
| before2.setAttribute('form', 'owner'); |
| container.insertBefore(before2, owner); |
| var after2 = document.createElement('input'); |
| after2.name = 'victim'; |
| after2.id = 'after2'; |
| after2.setAttribute('form', 'owner'); |
| container.appendChild(after2); |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after'); |
| shouldBe('owner.elements[5]', 'after2'); |
| |
| container.removeChild(before); |
| container.removeChild(after); |
| container.insertBefore(before, before2); |
| container.insertBefore(after, after2); |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after'); |
| shouldBe('owner.elements[5]', 'after2'); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |