95 lines
2.8 KiB
HTML
95 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
<form id="testForm">
|
|
Radio button array:
|
|
<input type="radio" name="type1" value="value1">
|
|
<input type="radio" name="type1" value="value2">
|
|
<input type="radio" name="type2" value="value4">
|
|
<input type="radio" name="type2" value="value5">
|
|
<br>
|
|
Single checkbox:
|
|
<input type="checkbox" name="chkbox" value="chkboxvalue">
|
|
<br>
|
|
</form>
|
|
<div id="external-elements">
|
|
<input type="radio" form="testForm" name="type1" value="value3">
|
|
<input type="radio" form="testForm" name="type2" value="value6">
|
|
</div>
|
|
</div>
|
|
<div id="console"></div>
|
|
<script>
|
|
|
|
description("RadioNodeList should be rooted at form itself if detached from dom tree");
|
|
debug("");
|
|
var owner = document.getElementById('testForm');
|
|
var radioNodeList1 = owner.elements['type1'];
|
|
var radioNodeList2 = owner.elements['type2'];
|
|
var container = document.getElementById('container');
|
|
|
|
function testRadioNodeList(expectedNumberOfItems) {
|
|
shouldBe('radioNodeList1.length', expectedNumberOfItems + '');
|
|
shouldBe('radioNodeList2.length', expectedNumberOfItems + '');
|
|
|
|
shouldBe('radioNodeList1[0].value', "'value1'");
|
|
shouldBe('radioNodeList1[1].value', "'value2'");
|
|
if (expectedNumberOfItems == 3)
|
|
shouldBe('radioNodeList1[2].value', "'value3'");
|
|
shouldBe('radioNodeList2[0].value', "'value4'");
|
|
shouldBe('radioNodeList2[1].value', "'value5'");
|
|
if (expectedNumberOfItems == 3)
|
|
shouldBe('radioNodeList2[2].value', "'value6'");
|
|
}
|
|
|
|
debug("form in dom tree");
|
|
testRadioNodeList(3);
|
|
|
|
debug("Check RadioNodeList.value");
|
|
shouldBe('radioNodeList1.value', '""');
|
|
shouldBe('radioNodeList2.value', '""');
|
|
shouldBe('radioNodeList1[2].checked = true; radioNodeList1.value', "'value3'");
|
|
|
|
container.removeChild(owner);
|
|
|
|
debug("");
|
|
debug("form detached from dom tree");
|
|
testRadioNodeList(2);
|
|
|
|
debug("Check RadioNodeList.value");
|
|
shouldBe('radioNodeList1[1].checked = true; radioNodeList1.value', "'value2'");
|
|
|
|
container.appendChild(owner);
|
|
var externalElements = document.getElementById('external-elements');
|
|
externalElements.parentNode.removeChild(externalElements);
|
|
container.appendChild(externalElements);
|
|
|
|
debug("");
|
|
debug("form again added to dom tree");
|
|
testRadioNodeList(3);
|
|
|
|
container.parentNode.removeChild(container);
|
|
|
|
debug("");
|
|
debug("form's ancestor detached from dom tree");
|
|
testRadioNodeList(2);
|
|
|
|
debug("Check RadioNodeList.value");
|
|
shouldBe('radioNodeList1[1].checked = true; radioNodeList1.value', "'value2'");
|
|
|
|
document.body.appendChild(container);
|
|
|
|
debug("");
|
|
debug("form again added to dom tree");
|
|
testRadioNodeList(3);
|
|
|
|
container.parentNode.removeChild(container);
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|