26. november 2008 - 11:23Der er
9 kommentarer og 1 løsning
Gentagelser af input felter med javascript
Hello.
Jeg har før set denne feature på nettet, men jeg kan desværre ikke huske hvor, så jeg bliver nødt til at ty til jeres hjælp atter en gang :-)
Kort sagt går det ud på at en bruger skal kunne invitere sine venner til et spil. Som standard er der 2 inputs, ét til navnet og ét til emailen. Jeg vil gerne give dem muligheden for at invitere flere venner, og for det ikke skal ødelægge designet med så mange input-felter liggende, skal brugeren kunne få flere input-felter frem ved at klikke på et link.
Et hurtigt eksempel: Navn: <input type="text" id="name" name="name"> Email: <input type="text" id="email" name="email"><br> <a href="#" onclick="en masse javascript skal sikkert være her">Klik her og invitér flere af dine venner!</a>
Ved at klikke på linket skal der dukke 2 nye felter op med navn og email - de skal selvfølgelig have nye id'er begge to (eks. 1, 2, 3 til slut ved de efterfølgende).
Der skal kun dukke 1 sæt felter op (navn og email) ved hvert klik på linket, men man skal tilgengæld kunne klikke op til 10 gange på linket, før det ikke længere er muligt at invitere flere venner.
<script type="text/javascript"> function cloneInputs(oLnk) { var o = document.getElementById("inputs"), oo = o.cloneNode(true); oo.attributes.removeNamedItem("id"); o.parentNode.insertBefore(oo, oLnk) } </script>
<div id="inputs">Navn: <input type="text" name="f_name[]"> Email: <input type="text" name="email[]"></div> <a href="#" onclick="cloneInputs(this);return false">Klik her og invitér flere af dine venner!</a>
- men pas på med id'er på felterne, da id'er jo skal være unikke ;o)
Nu kan jeg ikke se på de spørgsmål, du har deltaget i, om du er PHP-, ASP-, .NET-mand eller hvad. I PHP vil du få to arrays: $_POST["f_name"] og $_POST["email"], hvor du kan hive navne og emails ud. Bemærk, jeg har ændret navnefeltets navn fra 'name' til 'f_name' ... det andet kan godt give ged ;o)
Lad mig omformulere mit svar: Siderne jeg arbejder med er asp. Jeg har ikke selv evnen til kode det store i asp, så jeg ved ikke hvordan dataene skal behandles. Jeg er vant til at requeste til hidden inputs, og så kommer der nogle andre og laver det om ;-)
Er det muligt at begrænse hvor mange kloninger der kan laves?
<script type="text/javascript"> var nClones = 0; function cloneInputs(oLnk) { if ((++nClones)>=10) return alert("Hallo, Pomfrit! Kun 10!)"); var o = document.getElementById("inputs"), oo = o.cloneNode(true); oo.attributes.removeNamedItem("id"); o.parentNode.insertBefore(oo, oLnk);
Det er snart 100 år siden, jeg har lavet noget i ASP-classic, men mon ikke request.form("f_name") og request.form("email") indeholder hver sit array ... prøv =)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.