<style type="text/css" media="screen"> <!-- div.demoforms form { width: 40%; margin: 0 3%; border: solid 2px black; padding: 0 0.5em; } div.demoforms form#secondform { border-color: #666; } div.demoforms span.indent { margin-left: 2em; } form#secondform { float: right; } form#firstform p.secondonly { display: none; } form#secondform p.firstonly { display: none; } --></style> <script type="text/javascript"> function fixupMaster (obj) { if (obj.childNodes) for (var i = 0; i < obj.childNodes.length; ++i) { var cobj = obj.childNodes[i]; if ((cobj.tagName == 'INPUT' && cobj.type == 'text') || cobj.tagName == 'TEXTAREA') cobj.onchange = itemChanged; fixupMaster (cobj); } } function fixupSlave (obj) { if (obj.childNodes) for (var i = 0; i < obj.childNodes.length; ++i) { var cobj = obj.childNodes[i]; if (cobj.id) cobj.id += '2'; if (cobj.name) cobj.name += '2'; if (cobj.tagName == 'INPUT' || cobj.tagName == 'SELECT') cobj.disabled = true; fixupSlave (cobj); } } function itemChanged (e) { e = e || event; var obj = e.target || e.srcElement; var switcher = e.type + '/' + obj.tagName + (obj.tagName == 'INPUT' ? '/' + obj.type : ''); switch (switcher) { case 'change/TEXTAREA': case 'change/INPUT/text': document.getElementById (obj.id + '2').value = obj.value; break; case 'click/INPUT/checkbox': document.getElementById ('checkbox2').checked = obj.checked; break; case 'click/INPUT/radio': var fr = document.getElementById ('radios').getElementsByTagName ('input'); var fr2 = document.getElementById ('radios2').getElementsByTagName ('input'); for (var i = 0; i < fr.length; ++i) if (fr[i].type == 'radio') fr2[i].checked = fr[i].checked; else fr2[i].value = fr[i].value = obj.value; break; case 'click/OPTION': while (obj && obj.tagName != 'SELECT') obj = obj.parentNode; case 'click/SELECT': document.getElementById ('select2').selectedIndex = obj.selectedIndex; document.getElementById ('selectval').value = document.getElementById ('selectval2').value = obj[obj.selectedIndex].text; break; } return true; } window.onload = function () { if (! document.getElementById) return; var f = document.getElementById ('firstform'); var f2 = f.cloneNode (true); f.onclick = itemChanged; fixupMaster (f); fixupSlave (f2); f2.id = 'secondform'; f.parentNode.insertBefore (f2, f); var sel = document.getElementById ('select'); document.getElementById ('selectval').value = document.getElementById ('selectval2').value = sel[sel.selectedIndex].text; } </script> <div>Javascript demo</div> <div class="demoforms"> <form id="firstform" action="#" method="get" onsubmit="return false"> <p class="firstonly">Make changes in this form</p> <p class="secondonly">Changes appear in this form</p> <p>Text field: <input type="text" id="text" size="20"/></p> <p>Text area: <textarea id="textarea" rows="2" cols="20"></textarea></p> <p id="radios"><label id="foo">Radio buttons: <label><input type="radio" name="radio" value="one"/> A</label> <label><input type="radio" name="radio" value="two"/> B</label> <label><input type="radio" name="radio" value="three"/> C</label></label><br/> <span class="indent">Selected value: <input type="text" size="6" disabled="disabled"/></span></p> <p>Checkbox: <label><input type="checkbox" id="checkbox" value="xyzzy"/> Checkbox value</label></p> <p>Drop-down menu: <select id="select"> <option>First</option> <option>Second</option> <option>Third</option> </select><br /> <span class="indent">Selected value: <input type="text" id="selectval" size="6" disabled="disabled"/></span></p> </form> </div>