Avatar billede gadebarnet Nybegynder
14. december 2005 - 14:18 Der er 15 kommentarer

tilføj 2 input felter i java

Jeg har f.eks dette.
<tr><td>
<input type="text" name="type1"><input type="text" name="type2"><a href="">slet denne</a>
<br><br>
<a href="">Tilføj ny</a>
</td></tr>

Når man så trykker på tilføj ny så skal den lave et nyt sæt neden under, osv osv osv. Hvis man trykker på slet denne, så skal den post man er ud fra fjernes...

Man skal IKKE kunne slette hvis der kun er 1 post...

Hvordan gøres dette?
Avatar billede roenving Novice
15. december 2005 - 13:54 #1
Måske noget i stil med det, der vises i denne tråd: http://exp.dk/spm/666830 ?-)
Avatar billede gadebarnet Nybegynder
15. december 2005 - 13:56 #2
Ja, lidt, men der er ingen slet funktion og den tager den første værdi med...
Avatar billede roenving Novice
15. december 2005 - 14:00 #3
Tager den første værdi med ?-)

-- den sletter i hvert fald indholdet af de nye inputs !-)

Argh, der var en af mine klassiske fejl, ret dette til:

  for(i=0;inps.length>i;i++){
    if(inps[i].type == "text")
      inps[i].value = "";
  }

-- slet-funktionen kan godt tilføjes ...

-- hvis tabel-konceptet er brugbart er det ligetil, ellers kræver det en helt ny udgave, som jeg ikke umiddelbart har mod på !o]
Avatar billede gadebarnet Nybegynder
15. december 2005 - 14:01 #4
Kan jeg ikke få dig til at smække det hele sammen, men en slet funktion?
Avatar billede roenving Novice
15. december 2005 - 14:05 #5
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tilføj række i form/tabel</title>
<meta name="keywords" content="roenving,http://exp.dk/spm/666830">
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function addRow(elm){
  var tb = getParent(elm,"tbody");
  var tr = tb.getElementsByTagName("tr")[0];
  var nyTr = tr.cloneNode(true);
  var inps = nyTr.getElementsByTagName("input");
  for(i=0;inps.length>i;i++){
    if(inps[i].type == "text")
      inps[i].value = "";
  }
  var submitRow = getParent(elm, "tr");
  tb.insertBefore(nyTr,submitRow);
}
function deleteRow(elm){
  var tb = getParent(elm,"tbody");
  var trs = tb.getElementsByTagName("tr");
  if(3>trs.length)
    return;
  tb.removeChild(trs[trs.length-2]);
}
function getParent(elm,TagName){
  var parElm = elm.parentNode;
  while(parElm.tagName.toLowerCase() != TagName.toLowerCase())
    parElm = parElm.parentNode;
  return parElm;
}
</script>
</head>
<body>
<form action="" method="post" name="myForm">

<table width="200" border="1">
  <tr>
    <td><input name="firstname" type="text"></td>
    <td><input name="lastname" type="text"></td>
    <td><input name="pay" type="checkbox" value="payed"></td>
  </tr>
  <tr>
    <td><input name="addfield" type="button" value="Udvid form" onclick="addRow(this);return false;"><br>
    <input name="deletefield" type="button" value="Slet sidste række" onclick="deleteRow(this);return false;"></td>
    <td><input name="submit" type="submit" value="OK"></td>
    <td></td>
  </tr>
</table>
</form>

</body>
</html>
Avatar billede gadebarnet Nybegynder
15. december 2005 - 14:08 #6
Der skal være en slet knap ved hver linie, så man kan slætte en midt i det hele.
Avatar billede roenving Novice
15. december 2005 - 14:11 #7
Har du brug for den yderste checkbox ?-)
Avatar billede gadebarnet Nybegynder
15. december 2005 - 14:14 #8
nej... Den kan du jo bruge til slet... :)
Avatar billede roenving Novice
15. december 2005 - 14:29 #9
Denne er ikke skalerbar for alvor, men til formålet virksom !-)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tilføj række i form/tabel</title>
<meta name="keywords" content="roenving,http://exp.dk/spm/666830">
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function addRow(elm){
  var tb = getParent(elm,"tbody");
  var tr = tb.getElementsByTagName("tr")[0];
  var nyTr = tr.cloneNode(true);
  var inps = nyTr.getElementsByTagName("input");
  for(i=0;inps.length>i;i++){
    if(inps[i].type == "text")
      inps[i].value = "";
  }
  var submitRow = getParent(elm, "tr");
  tb.insertBefore(nyTr,submitRow);
}
function deleteRow(elm){
  var tb = getParent(elm,"tbody");
  var trs = tb.getElementsByTagName("tr");
  if(3>trs.length)
    return;
  for(i=1;trs.length>i+1;i++){
    if(trs[i].getElementsByTagName("input")[2].checked)
      tb.removeChild(trs[i]);
  }
}
function getParent(elm,TagName){
  var parElm = elm.parentNode;
  while(parElm.tagName.toLowerCase() != TagName.toLowerCase())
    parElm = parElm.parentNode;
  return parElm;
}
</script>
</head>
<body>
<form action="" method="post" name="myForm">

<table width="400" border="1">
  <tr>
    <td><input name="firstname" type="text"></td>
    <td><input name="lastname" type="text"></td>
    <td>Slet: <input name="slet" type="checkbox" value="delet"></td>
  </tr>
  <tr>
    <td><input name="addfield" type="button" value="Udvid form" onclick="addRow(this);return false;"><br>
    <input name="deletefield" type="button" value="Slet markeret række" onclick="deleteRow(this);return false;"></td>
    <td><input name="submit" type="submit" value="OK"></td>
    <td></td>
  </tr>
</table>
</form>

</body>
</html>
Avatar billede gadebarnet Nybegynder
15. december 2005 - 14:32 #10
Den sletter ikke alle, hvis man vælger mere end 3...
Avatar billede roenving Novice
15. december 2005 - 14:54 #11
Argh, en anden klassiker, for når man skal slette noget, er det mest hensigtsmæssigt at starte bagfra, selvom jeg ikke kan forstå, at der skulle kunne være et problem, for objekt-referencerne er allerede fastlagt, men udskift slet-funktionen med:

function deleteRow(elm){
  var tb = getParent(elm,"tbody");
  var trs = tb.getElementsByTagName("tr");
  if(3>trs.length)
    return;
  for(i=trs.length-2;i>0;i--){
    if(trs[i].getElementsByTagName("input")[2].checked)
      tb.removeChild(trs[i]);
  }
}
Avatar billede gadebarnet Nybegynder
15. december 2005 - 14:56 #12
Den vil aldrig slette den første... heller ikke når der er flere end 1
Avatar billede roenving Novice
15. december 2005 - 15:01 #13
Det har du jo også stillet som forudsætning !-)

-- og det er iøvrigt også en forudsætning for, at den algoritme, jeg bruger, kan du !o]
Avatar billede gadebarnet Nybegynder
15. december 2005 - 15:02 #14
Så har man jo et problem hvis man gerne vil af med den første... Måske jeg bare skulle lave det i asp.
Avatar billede roenving Novice
15. december 2005 - 15:08 #15
Jamen, du skriver jo:

"
Man skal IKKE kunne slette hvis der kun er 1 post...
"
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