[Javascript] [SOLVED] JS Help: Dynamic form control

Michael Hulse micky at ambiguism.com
Sun Mar 5 20:47:20 CST 2006


On Mar 5, 2006, at 11:32 AM, Troy III Ajnej wrote:
> Sorry, I've just tested it. It doesn't work for me in either NN, FX 
> nor IE.

Hmm, that is strange... I am on a Mac though (tested Safari/Firefox), 
and only tested it in IE6/PC, so it sounds like I am missing 
something...

Here is the full code (Javascript is in external file):

<snip>

function event_attach(event, func) {
	if (window.attachEvent) {
		window.attachEvent(event, func);
	}
	else {
		if((typeof(func)).toLowerCase() != 'function') {
			return;
		}
		if((typeof(document.event_handlers)).toLowerCase() == 'undefined') {
			document.event_handlers = new Array();
		}
		if((typeof(document.event_handlers[ event ])).toLowerCase() == 
'undefined') {
			document.event_handlers[ event ] = new Array();
		}
		if((typeof(eval('window.' + event))).toLowerCase() != 'function') {
			eval('window.' + event + ' = function () { if 
((typeof(document.event_handlers[ \'' + event + '\' ])).toLowerCase() 
!= \'undefined\') { for (i = document.event_handlers[ \'' + event + '\' 
].length - 1 ; i >= 0  ; i--) { document.event_handlers[ \'' + event + 
'\' ][ i ](); } } } ');
		}
		document.event_handlers[ event ][ document.event_handlers[ event 
].length ] = func;
	}
}
var counter = 0;
function moreFields() {
	counter++;
	var newFields = document.getElementById('readroot').cloneNode(true);
	newFields.id = '';
	newFields.style.display = 'block';
	newFields.firstChild.nodeValue=counter + '. ';
	changeId(newFields, counter);
	var insertHere = document.getElementById('writeroot');
	insertHere.parentNode.insertBefore(newFields,insertHere);
}
function delField() {
	var writeroot = document.getElementById('writeroot');
	if(counter >= 1) {
		writeroot.parentNode.removeChild(writeroot.previousSibling);
		counter--;
	}
}
function changeId(r, c) {
	var rKids = r.getElementsByTagName('*');
	var i = rKids.length;
	var rKid;
	while(i--) {
		rKid = rKids[i];
		if (rKid.id) rKid.id = rKid.id + c;
		if (rKid.name) rKid.name = rKid.name + c;
	}
}
event_attach('onload', moreFields);

XHTML:

<div id="readroot" style="display: none">
	
	<div class="fm-req">
		<label for="item_">* Item name:</label>
		<input name="item_" id="item" type="text" title="Item name" />
	</div>
	
	<div class="fm-req">
		<label for="product_">* Product #:</label>
		<input name="product_" id="product" type="text" title="Product 
number" />
	</div>
	
	<div class="fm-opt">
		<label for="quantity_">Quantity desired:</label>
		<input name="quantity_" id="quantity" type="text" title="Desired 
quantity" />
	</div>
	
	<input class="fm-remove" id="remove" type="button" value="Remove Item" 
onclick="delField();" />

	<div class="horizRule"></div>

</div>

<form name='contact_us' id='contact_us' method="post" 
action="/inc/process.php">

<fieldset>

	<legend>Choose Overstock Item(s)</legend>
	
	<span id="writeroot"></span>
	
	<div id="fm-add" class="fm-req">
		<input type="button" value="Add Item" onclick="moreFields()" />
	</div>

</fieldset>

<div id="fm-submit" class="fm-req">
	<input name="submit" value="Submit" type="submit" title="Submit" 
/>&nbsp;<input name="Reset" value="Reset" type="reset" title="Reset" />
</div>

</form>

</snip>

On Mar 5, 2006, at 1:26 PM, Troy III Ajnej wrote:
> Here is the working code for NN, FX and the doubted IE

Great! Perfect! Thank you so much for your help, I really appreciate 
you time.  :)

I am glad to call this job done.  ;)

I hope that one day I can help you out.  :D

Have a great day,
Cheers,
Micky




More information about the Javascript mailing list