Gå til innhold

Sette inn flere form-elementer onclick


Anbefalte innlegg

Har følgende skjema:

<form action="" method="POST">
<input type="text" name="navn[]">
</form>
<a href="#" onclick="insertNavnFelt();">

 

Hvordan skal "insertNavnFelt()" se ut, slik at den setter inn enda et "navn[]"-felt i skjemaet hver gang man klikker på linken?

Lenke til kommentar
Videoannonse
Annonse
Har følgende skjema:
<form action="" method="POST">
<input type="text" name="navn[]">
</form>
<a href="#" onclick="insertNavnFelt();">

 

Hvordan skal "insertNavnFelt()" se ut, slik at den setter inn enda et "navn[]"-felt i skjemaet hver gang man klikker på linken?

9396420[/snapback]

Tenkte du kanskje noe slikt som:

 

<form id='navn' action="" method="POST">
<input type="text" name="navn[]">
</form>
<a href="#" onclick='insertNavnFelt()'>tull</a>

function insertNavnFelt(){
input = document.createElement('input');
input.type = 'text';
input.name = "navn[]";
document.getElementById('navn').appendChild(input);
}

Lenke til kommentar

Nettopp! :D

 

Men, hvordan kan jeg legge til teksten "Navn: " foran alle tekstboksene?

<form id='navn' action="" method="POST">
Navn: <input type="text" name="navn[]"><br>
</form>
<a href="#" onclick='insertNavnFelt()'>tull</a>

<script>
function insertNavnFelt(){
input = document.createElement('input');
input.type = 'text';
input.name = "navn[]";
br = document.createElement('br');
document.getElementById('navn').appendChild(input);
document.getElementById('navn').appendChild(br);
}</script>

Lenke til kommentar
Nettopp! :D

 

Men, hvordan kan jeg legge til teksten "Navn: " foran alle tekstboksene?

<form id='navn' action="" method="POST">
Navn: <input type="text" name="navn[]"><br>
</form>
<a href="#" onclick='insertNavnFelt()'>tull</a>

<script>
function insertNavnFelt(){
input = document.createElement('input');
input.type = 'text';
input.name = "navn[]";
br = document.createElement('br');
document.getElementById('navn').appendChild(input);
document.getElementById('navn').appendChild(br);
}</script>

9397210[/snapback]

Opprett et element div/span etc. og legg tekst inn i elementet:

tekstenmin = document.createElement('span');
tekstenmin.innerHTML = 'dette er en tekst';
document.getElementById('navn').appendChild(tekstenmin);

Du kan selvfølgelig bruke innerHTML direkte på form-taggen: document.getElementById('navn').innerHTML osv. , men dette er ikke pent, og har også gitt meg mye feilmeldinger i IE.

Lenke til kommentar
Aha, takker! ;)

 

Er det mulig å fjerne elementer også?

F.eks at man har lagt til et "navn-element" for mye og ønsker å fjerne det? (sette en link til "delete" ved siden av hver navn-input f.eks)

9397866[/snapback]

 

Jepp det er mulig å få til se: http://www.w3schools.com/htmldom/dom_nodes_access.asp

 

Kode klippet direkte fra nettsiden over:

var x=document.getElementById("maindiv");
x.parentNode.removeChild(x);

Hvor maindiv er id'en til elementet du ønsker å fjerne.

 

Edit: Men da må du altså legge inn unike id'er for alle elementene som er lagt til.

Endret av magicgunnar
Lenke til kommentar

Slik ble det:

<form id='navn' action="" method="POST">
Navn: <input type="text" name="navn[]"><br>
</form>
<a href="#" onclick='insertNavnFelt()'>Legg til felt</a><br>
<a href="#" onclick='fjernNavnFelt()'>Fjern siste felt</a><br>

<script>
var i = 1;

function insertNavnFelt(){
tekstenmin = document.createElement('span');
tekstenmin.innerHTML = 'Navn: ';
tekstenmin.id = 'navnFelt0' + i;
input = document.createElement('input');
input.type = 'text';
input.name = "navn["+i+"]";
input.id = "navnFelt1" + i;
br = document.createElement('br');
br.id = "navnFelt2"+i;

document.getElementById('navn').appendChild(tekstenmin);
document.getElementById('navn').appendChild(input);
document.getElementById('navn').appendChild(br);

++i;
}

function fjernNavnFelt() {
--i;
for (var j = 0; j <= 3; j++) {
 var x=document.getElementById("navnFelt"+j+i);
 x.parentNode.removeChild(x);
}
}
</script>

 

Ser ut til å virke fint! :w00t:

Lenke til kommentar

Hmm... finnes det ingen lettere måte å gjøre det på?

 

Nå skal jeg for hvert klikk legge til noe sånt

 <tr><td><select name="stilling">
<option value="">VELG</option>
<option value="valg">valg</option>
</select>
</td><td>
<select name="dag">
<option value="">DAG</option>
<option value="1">1</option>
// Osv, ordnes med PHP så den er grei
</select>
</td><td>
<select name="mnd">
<option value="">MND</option>
<option value="1">Jan</option>
// Osv, ordnes med PHP så den er grei
</select>
</td><td>
<select name="aar">
<option value="">ÅR</option>
<option value="2007">2007</option>
// Osv, ordnes med PHP så den er grei
</select>
</td><td>
<input type="text" name="kommentar"></td></tr>

 

Da blir det veldig tungvindt å legge til hvis jeg må ha 2-3 linjer for hvert element... :S

Endret av ZoRaC
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...