Avatar billede ssv Nybegynder
26. november 2008 - 11:23 Der 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.

Håber i har tid til at hjælpe mig :-)
Avatar billede olebole Juniormester
26. november 2008 - 13:56 #1
<ole>

Det kunne gøres sådan:

<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)

/mvh
</bole>
Avatar billede ssv Nybegynder
26. november 2008 - 14:04 #2
Jeg er asp-mand. Tak for hjælpen, det er super. Genererer scriptet selv id'er til de forskellige inputs, og hvordan vil jeg så kunne hente dem?
Avatar billede ssv Nybegynder
26. november 2008 - 14:06 #3
Og er det muligt at sætte en begrænsning på hvor mange 'kloner' det er muligt at oprette? Gerne en grænse på omkring 10.
Avatar billede olebole Juniormester
26. november 2008 - 14:06 #4
Skal du bruge ID'er i forbindelse med JS, eller skal inputtene kun behandles på serveren? Så er ID'er jo nemlig ligemeget  =)
Avatar billede ssv Nybegynder
26. november 2008 - 14:20 #5
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?
Avatar billede olebole Juniormester
26. november 2008 - 14:33 #6
Begrænsningen kan laves sådan:

<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);
   
}
</script>
Avatar billede olebole Juniormester
26. november 2008 - 14:39 #7
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  =)
Avatar billede ssv Nybegynder
04. december 2008 - 15:07 #8
Alt fungerer. Smid et svar så vi kan få lukket :-)
Avatar billede olebole Juniormester
04. december 2008 - 15:40 #9
Gerne  =)
Avatar billede olebole Juniormester
17. december 2008 - 16:25 #10
Tak for points  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester