Avatar billede michael_stim Ekspert
27. september 2006 - 14:22 Der er 5 kommentarer og
1 løsning

Huske værdien ved tilbage.

Har en funktion hvor man kan lave sit eget lille formular. Den består af et antal dd-boxe, hvor man så kan vælge hvilken komponent man vil bruge. Klikker man så på en "Vis"-knap bliver man sendt videre til en side hvor formularet så bliver vist.

Mit problem består så i, at den skal huske hvad man har valgt, når man f ex fortryder og klikker tilabage.

Gemmer alt i sessions, så det er ikke noget problem at få dd-boxene til at stå på en bestemt værdi. Des værre er det med de komponenter man har valgt, for de bliver genereret ved en onChange i dd-boxen.

Her kommer lidt af min kode:

  <?php
  if(isset($_GET['tilbage']) && $_GET['tilbage'] == 'ok'){
      echo"function nytElement(typer, nr, vardi){";
  }
  else{
      echo"function nytElement(typer, nr){";   
  } 
  ?>
      document.getElementById('oData['+nr+']').innerHTML="";
      if(typer=="0"){
          alert('Den går ikke');
      }
      else if(typer=="navn"){
          var node=document.createTextNode('Label til tekstfelt:')
          var ele=document.createElement('input');
          document.getElementById('ioData['+nr+']').appendChild(node);
          ele.setAttribute('type','text');
          ele.setAttribute('name','navn'+nr);
          ele.setAttribute('size','20');
          ele.setAttribute('className','textGreen');
          ele.setAttribute('class','textGreen');
        }
      else if(typer=="tal"){
          var node=document.createTextNode('Label til talfelt:')
          var ele=document.createElement('input');
          document.getElementById('ioData['+nr+']').appendChild(node);
          ele.setAttribute('type','text');
          ele.setAttribute('name','taltekst'+nr);
          ele.setAttribute('size','20');
          ele.setAttribute('className','textGreen');
          ele.setAttribute('class','textGreen');
        }
osv osv

Kaldet:

                            if(isset($_GET['tilbage']) && $_GET['tilbage'] == 'ok'){
                                foreach($_SESSION['sessFelt'] as $key=>$value){
                                    $type=($i<10 ? substr($value[0],0,-1) : substr($value[0],0,-2));
                                    //$type=substr($value[0],0,-1);
                                    //echo $type."<br>";
                                    $i++;
                                        echo"<tr>\n";
                                        echo "<td>\n";
                                        echo"<span id=\"ioData[".$i."]\"></span>&nbsp;<span id=\"oData[".$i."]\"></span>&nbsp;</td><td><select name=\"felt[".$i."]\" onChange=\"nytElement(this.value,'". $i ."')\" onLoad=\"nytElement(this.value,'". $i ."', '". $value[1] ."')\" class=\"textGreen\">\n";                                   
                                    switch($type){
                                        case "overskrift":
                                        echo"<option value=\"overskrift\" selected>Overskrift</option>\n";
                                        echo"<option value=\"navn\">Navn</option>\n";
                                        echo"<option value=\"tal\">Tal</option>\n";
                                        echo"<option value=\"check\">Checkbox</option>\n";
                                        echo"<option value=\"tekst\">Tekstfelt</option>\n";
                                        echo"<option value=\"linieskift\">Linieskift</option>\n";
                                        echo"</select>\n<br>";
                                        echo"</td>\n</tr>\n";
                                        break;
                                        case "navn":
                                       
                                        echo"<option value=\"overskrift\">Overskrift</option>\n";
                                        echo"<option value=\"navn\" selected>Navn</option>\n";
                                        echo"<option value=\"tal\">Tal</option>\n";
                                        echo"<option value=\"check\">Checkbox</option>\n";
                                        echo"<option value=\"tekst\">Tekstfelt</option>\n";
                                        echo"<option value=\"linieskift\">Linieskift</option>\n";
                                        echo"</select>\n<br>";
                                        echo"</td>\n";
                                        echo "<td>".$value[1]."</td><td><input type=\"text\" style=\"width: 180px;\" class=\"textGreen\" name=\"".$value[0]."\"></td></tr>\n";
                                        break;
osv osv

Har prøvet med en onLoad i select'en, men det virker ikke.
Avatar billede olebole Juniormester
27. september 2006 - 14:28 #1
<ole>

Hvad står der uden PHP-kode - og hvad er det præcist, der er problemet?

/mvh
</bole>
Avatar billede michael_stim Ekspert
27. september 2006 - 14:28 #2
PS.
Har selvf. en tilbageknap.
Avatar billede michael_stim Ekspert
27. september 2006 - 14:30 #3
Problemet er at den skal kalde funktionen nytElement() men tilhørende værdier, når man klikker på en tilbageknap.
Avatar billede michael_stim Ekspert
27. september 2006 - 14:30 #4
For den specifikke dd-box ;o)
Avatar billede michael_stim Ekspert
27. september 2006 - 14:32 #5
<form id="dhtmlForm" action="/test/admin/dynform.php" method="post">
                <table width="500" border="0" cellpadding="0" cellspacing="5">
                    <tr>
                        <th colspan="2"><b>Nyt formular</b><br></th>

                    </tr>                   
                    <tr>
                        <td>Navn på blanketten</td>
                        <td><input type="text" name="doknavn" size="20" class="textGreen"></td>
                    </tr>
                        <tr><td>
<span id="ioData[0]"></span>&nbsp;<span id="oData[0]"></span>&nbsp;</td><td><select name="felt[0]" onChange="nytElement(this.value,'0')" class="textGreen">
<option value="0" selected>--Vælg--</option>
<option value="overskrift">Overskrift</option>

<option value="navn">Navn</option>
<option value="tal">Tal</option>
<option value="check">Checkbox</option>
<option value="tekst">Tekstfelt</option>
<option value="linieskift">Linieskift</option>
</select>
<br></td></tr>
<tr><td>
<span id="ioData[1]"></span>&nbsp;<span id="oData[1]"></span>&nbsp;</td><td><select name="felt[1]" onChange="nytElement(this.value,'1')" class="textGreen">
<option value="0" selected>--Vælg--</option>
<option value="overskrift">Overskrift</option>

<option value="navn">Navn</option>
<option value="tal">Tal</option>
<option value="check">Checkbox</option>
<option value="tekst">Tekstfelt</option>
<option value="linieskift">Linieskift</option>
</select>
<br></td></tr> osv osv

uden php.
Avatar billede michael_stim Ekspert
27. september 2006 - 14:55 #6
Løste det med at hårdkode elementerne ind i span'ene. Måske ikke så fint men det virker.
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