Avatar billede ktolbod Nybegynder
13. maj 2005 - 14:48 Der er 14 kommentarer og
2 løsninger

Dynamisk generering af textfields.

Hejsa

Jeg har brug for et javascript som dynamsik kan genererer textfields. Som standart skal der være et textfield, når brugeren indtaster en værdig i denne skal der automatisk genereres et nyt textfield neden under.

på forhånd tak
Avatar billede roenving Novice
13. maj 2005 - 15:21 #1
<form>
<span id="minSpan">
<input name="input0" onkeyup="return newInput(this)">
</span><br>
<input type="submit">
</form>

-- og scriptet:

<script type="text/javascript">
function newInput(elm){
  if(elm.value.length!=1)
    return;
  var par = elm.parentNode;
  var num = +elm.name.replace(/.+?(\d+)$/,"$1");
  var newInp = elm.cloneNode(true);
  newInp.name = "input" + (++num);
  newInp.value = "";
  par.innerHTML += "<br>";
  par.appendChild(newInp);
  return true;
}
</script>
Avatar billede ktolbod Nybegynder
13. maj 2005 - 15:39 #2
Det ser jo super ud.
Men den midster focus efter man har indtastet et tegn.
Har du en løsning på det roenving?
Derudover hvordan får jeg den til at tælle værdien i textfield'et op med en?
Avatar billede roenving Novice
13. maj 2005 - 16:07 #3
Den med fokus-tingen kunne jeg heller ikke greje, selvom jeg forsøgte en del forskellige ting ...

-- men da den er baseret på, at den genererer den næste i det øjeblik, der er skrevet eet tegn, giver det ikke mening at udfylde det nye felt med en værdi, så der skal bruges fuldstændig andre ting ...

-- så du forklare meget mere om hvad du skal bruge det til !-)
Avatar billede olebole Juniormester
13. maj 2005 - 16:20 #4
<ole>

roenving >> med:
    par.innerHTML += "<br>";
- overskriver du span'ets indhold, hvorfor det element, du skrev et tegn i, ikke længere eksisterer. Det element, du tror, er det samme, er blot en kopi af det, du skrev i. Derfor vil et kald à la:
  elm.focus()
- udløse en fejl.

Løsningen er at holde sig til DOM:

function newInput(elm) {
  if(elm.value.length!=1)
    return;
  var par = elm.parentNode;
  var num = +elm.name.replace(/.+?(\d+)$/,"$1");
  var newInp = elm.cloneNode(true);
  newInp.name = "input" + (++num);
  newInp.value = "";
  var br = document.createElement("br");
  par.appendChild(br);
  par.appendChild(newInp);
  return true;
}

/mvh
</bole>
Avatar billede ktolbod Nybegynder
13. maj 2005 - 16:21 #5
ok.
Man skal kunne indtaste et track&trace nr i feltet, og problemet er at et track&trace nr kan variere i længde.
Avatar billede olebole Juniormester
13. maj 2005 - 16:21 #6
- det er ikke nødvendigt, men du må gerne afslutte med dette, hvis du vil være helt Toyota-sikker:

  par.appendChild(br);
  par.appendChild(newInp);
  elm.focus();
  return true;
Avatar billede olebole Juniormester
13. maj 2005 - 16:24 #7
ktolbod >> Hvis du ikke ved, hvorlang strengen er, må du definere en anden handling, feltet skal oprettes på ....... eller belave dig på 'onClairVoyance' event'en  ;o)
Avatar billede roenving Novice
13. maj 2005 - 16:27 #8
>>ole

Argh, den havde jeg helt overset, fordi jeg var i tvivl om konstruktionen med først at appende et br og derefter bruge dom ville virke, så da det virkede, tænkte jeg at jeg slap over hvor der var et lavt gærde ...

>>ktolbod

Hvornår kan man vide, at der er brug for det nye felt ?-)
Avatar billede olebole Juniormester
13. maj 2005 - 16:30 #9
*LooL* ... jeg må indrømme, at fejlen sprang mig lige i fjæset med det samme. Jeg skal sige dig: Jeg har en fabelagtig øvelse med lige præcis den fejl ... og hvis du nu er rigtig flink, hænger du mig ikke op på tørresnoren ved at spørge, hvorfra.
Schhhhhh .....  ;D
Avatar billede ktolbod Nybegynder
13. maj 2005 - 16:38 #10
Olebole den virker sgu. Jeg bruger en onkeydown i input feltet.
hvem vil have point?
Avatar billede olebole Juniormester
13. maj 2005 - 16:49 #11
Jamen, hvis vi er færdige, deler roenving og jeg vel bare ... 40 til roenving og 20 til mig er vel meget fair  :)
Avatar billede roenving Novice
13. maj 2005 - 16:51 #12
Tjah, tjoeh ...

Velbekomme '-)
Avatar billede ktolbod Nybegynder
13. maj 2005 - 16:53 #13
sorry, men hvordan deler jeg point?
Avatar billede roenving Novice
13. maj 2005 - 16:55 #14
Dele lige over: Markér begge navne i boksen til venstre og tryk Acceptér ...

Dele anderledes: Tryk på avanceret og angiv point til hver !-)
Avatar billede roenving Novice
16. maj 2005 - 09:58 #15
Tak for point ;~}
Avatar billede olebole Juniormester
16. maj 2005 - 15:56 #16
- og et tak herfra også  :)
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