Avatar billede Morten Nybegynder
27. november 2005 - 23:38 Der er 7 kommentarer og
1 løsning

Ny linie når der skrives i sidste linie

Hej

Jeg vil høre om der findes en funktion som kan oprette et input felt når jeg udfylder det sidste på siden.

F.eks. har jeg 5 input felter men det er muligt at brugeren har brug for 10 kan jeg så dynamisk oprette dem hver gang der skrives i den sidste tomme ???
Avatar billede skovenborg Nybegynder
27. november 2005 - 23:59 #1
<script type="text/javascript">
  function addTextInput() {
        var frm = this.form;
        for (var i = 0,addNew=true; i<frm.elements.length;i++) {
          if (frm.elements[i].type == "text") {
                addNew = addNew && frm.elements[i].value.match(/\S/ig)
          }
      }
      if (addNew) {
          var textInput = document.createElement("input");
          textInput.onchange = addTextInput;
          frm.appendChild(textInput);
      }
  }

  window.onload = function() {
      var frm = document.getElementById("form1");
      for (var i = 0; i<frm.elements.length;i++) {
          if (frm.elements[i].type == "text") {
                frm.elements[i].onchange = addTextInput;
          }
      }
  }
</script>

<form id="form1">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
</form>

Felterne kommer måske til at ligge lidt uhensigtsmæssigt i forhold til dit design, da der ikke er noget linjeskift, mellemrum eller andet, som kan adskille de forskellige felter fra hinanden. Dette kan ordnes, men jeg kan jo ikke vide hvordan du vil præcis vil have det. Desuden har felterne heller ikke et navn - dette kan også fikses, fx:
if (addNew) {
            var textInput = document.createElement("input");
            textInput.setAttribute("type","textarea");
            textInput.onchange = addTextInput;
            textInput.name = "text"+(i+1);
            frm.appendChild(textInput);
        }

Du skal foresten også huske at tilføje en id på din form:
<form id="form1">
Avatar billede Morten Nybegynder
28. november 2005 - 00:09 #2
Tak skovenborg

Jeg har ikke lavet siden endnu, er kun på et stykke papir foran mig...

Men jeg forventer at det skal indgå i en tabel/form med 5 input felter per linie som så selvfølelig skal submittes og gemmes i en DB.

Men jeg skal måske vente og så vende tilbage når jeg har koden til de 5 første linier.

Jeg er ikke særlig "stiv" i javascript, så jeg vender tilbage når jeg har noget kode... (senere i dag eller en af de nærmeste dage...)
Avatar billede skovenborg Nybegynder
28. november 2005 - 00:16 #3
fint nok - men hvis du ikke har noget imod det smutter jeg lige i seng først ;-) Men du skal være velkommen til at spørge senere :-)
Avatar billede Morten Nybegynder
28. november 2005 - 00:17 #4
Sov god ;O) Det bliver nok også først i morgen - skulle bare sikre mig at det kunne lade sig gøre.

Tester nok også lige om jeg kan finde ud af at bruge ovenstående... kan ikke helt se hvornår ovenstående indsætter linie?
Avatar billede roenving Novice
28. november 2005 - 15:15 #5
Se f.eks. http://exp.dk/spm/666830 !-)
Avatar billede Morten Nybegynder
07. december 2006 - 17:58 #6
Øhh lukketid? - hvis nogen af de herre vil have point så smid et svar.
Avatar billede roenving Novice
15. december 2006 - 12:59 #7
Tjah, det er vel Ulrik, der skal have pointene -)
Avatar billede skovenborg Nybegynder
15. december 2006 - 14:50 #8
Jamen, jeg takker da ydmygt. Håber du fik det til at virke dengang ;-)
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