Hej!
Jeg forsøger at opdatere options i en select i en dynamisk form.
Ideen er, at brugeren selv kan tilføje linjer i formen, og den del virker. Men det betyder, at formelementerne har nye navne og ID for hver linje der bliver tilføjet. Det giver forhåbentlig mening her:
- <form name="customForm">
- <div id="dynamicInput">
- <p>
- <select name="hovedfelt1" onchange="updatechoices(delfelt1, this.value);" style="width:150px;">
- <option>Vælg hovedfelt</option>
- <option>Titelfelt</option>
- <option>Materialetype</option>
- <option>Forfatterfelt</option>
- </select>
- <select name="delfelt1" id="delfelt1" style="width:150px;"></select>
- <input type="text" name="datafelt1" /></p>
- </div>
- <p><input type="button" value="Tilføj linje" onClick="addInput('dynamicInput');" /></p>
- </form>
og javascript:
- function updatechoices(objLine, choice)
- {
- if(choice == "Titelfelt")
- {
- document.customForm.getElementById(objLine).options[0]=new Option("Hovedtitel", "hovedtitel", true, false);
- document.customForm.getElementById(objLine).options[1]=new Option("Undertitel", "undertitel", false, false);
- }
- else if(choice == "Forfatterfelt")
- {
- document.customForm.getElementById(objLine).options[0]=new Option("Fornavn(e)", "fornavn", true, false);
- document.customForm.getElementById(objLine).options[1]=new Option("Efternavn", "efternavn", false, false);
- document.customForm.getElementById(objLine).options[2]=new Option("født d.", "birth", false, false);
- }
- }
-
- var counter = 1;
- var limit = 15;
- function addInput(divName){
- if (counter == limit) {
- alert("Du kan ikke tilføje flere linjer.");
- }
- else {
- var newdiv = document.createElement('div');
- newdiv.innerHTML = "<p><select name='hovedfelt" + (counter + 1) + "' onchange='updatechoices(delfelt" + (counter + 1) + ", this.value);' style='width:150px;'><option>Vælg hovedfelt</option><option>Titelfelt</option><option>Materialetype</option><option>Forfatterfelt</option></select> <select name='delfelt" + (counter + 1) + "' id='delfelt" + (counter + 1) + "' style='width:150px;'></select> <input type='text' name='datafelt" + (counter + 1) + "' />";
- document.getElementById(divName).appendChild(newdiv);
- counter++;
- }
- }
Hvis jeg bytter getElementById(objLine) ud med den enkelte linjes egentlige id/navn virker det. Men fordi formen er dynamisk, vil jeg gerne kunne bruge getElementById(), så jeg kan identificere hver felt for hver linje.
Nogen forslag?