Avatar billede phliplip Nybegynder
07. december 2003 - 01:18 Der er 10 kommentarer og
1 løsning

Overføre array af checkboxe mellem form og iframe

Hej Exp !

Jeg er igang med at lave en side så jeg kan styre mine brugeres rettigheder på sitet.. det jeg havde forestillet mig var at på den side hvor jeg redigerer deres andre egenskaber som brugernavn, adresse osv. ville jeg have en iframe med en side, hvor der var en liste over deres rettigheder og et flueben / checkbox ud for hver rettighed !! Men hvordan får jeg dem med når jeg submitter formularen, jeg havde forestillet mig noget med onsubmit='' at den så skulle kopiere rettighederne ned i en hiddenfield eller noget i den stil, men det er sikkert forkert :) !?

iframen har id='iframeRettigheder'

Alle checkboxe hedder name='rettigheder' og har id='rettighederne'

Understøtter PHP, hvis det bliver nødvendigt.
Avatar billede roenving Novice
07. december 2003 - 01:27 #1
Princippet er:

function copyRights(f){
f.hiddenMustCreate.value = window.iframeRettigheder.document.FORMNAVN.mustCreate.checked;
}

og så:

<form ... onsubmit="copyRights(this);>

-- mere præcist vil kræve noget mere kode !-)

-- så lige at du havde brugt id, så skal det være:

document.getElementById['iframeRettigheder'].document.FORMNAVN.mustCreate.checked;

-- det første gik ud fra, at du ahvde brugt name på iframen, men hvad med begge ?-)
Avatar billede roenving Novice
07. december 2003 - 02:17 #2
Fik lige lidt mere tid til at læse din tekst, så ud fra ovenstående har jeg en vigtig kommentar:

id _skal_ være unikt, så der må _ikke_ findes flere elementer i et dokument, som har samme id !-)

men en form med dette udseende:

<form ... onsubmit="copyRights(this);>
<input type="hidden" name="rights">
...
</form>

kan du overføre alle rettighederne med (her går jeg ud fra, at de har en value, som er forskellig for hver, hvis du bare vil have et array er den ikke mere kringlet !-)

function copyRights(f){
  fld2 = window.iframeRettigheder.document.FORMNAVN.rettigheder;
  var val = new Array();
  for(i=0;fld2.length>i;i++){
    if(fld2[i].checked)val[val.length] = fld2[i].value;
  }
  f.rights.value = val;
}

-- dette vil give en kommasepareret liste i dit felt over hvilke rettigheder, der er afkrydset !o]
Avatar billede phliplip Nybegynder
07. december 2003 - 02:50 #3
Oki.. det prøver jeg i morgen (senere i dag) roenving :)

Men nu vil jeg først i putte-kassen ;D YeaH
Avatar billede phliplip Nybegynder
07. december 2003 - 15:00 #4
Hej roenving !

Nu har jeg prøvet med følgende.. uden resultat siger "Fejl: Et objekt var obligatorisk"

                                    <script language="JavaScript">
                                    function copyRights() {
                                        var fld2 = document.getElementById('iframeRettigheder').document.rettigheder;
                                        var val = new Array();
                                        for(i=0;fld2.length>i;i++){
                                            if(fld2[i].checked)val[val.length] = fld2[i].value;
                                        }
                                        document.getElementById('rights').value = val;
                                    }
                                    </script>
Avatar billede roenving Novice
07. december 2003 - 15:06 #5
I hvert fald mangler .formNavn

-- for som omtalt ovenfor skal du bruge name til at få fat i alle checkboxe, og så kan man kun få fat i dem via en form ...

Og så kan du bestemme hvilken delimiter der skal være i dit felt med:

document.getElementById('rights').value = val.join(';');
Avatar billede phliplip Nybegynder
07. december 2003 - 16:57 #6
Jeg kan dælema ikke få det til at virke.. nu har jeg prøvet at ligge det over på en test side der tester princippet..

http://80.198.33.207/medieburner/

Og nu køres scriptet ikke på submit men når man klikker på knappen tjek !
Avatar billede phliplip Nybegynder
07. december 2003 - 17:07 #7
Nu har jeg fået det script til at virke !! Nu skal jeg se om jeg kan få det til at virke der hvor det er meningen at det skal virke ;)
Avatar billede roenving Novice
07. december 2003 - 17:13 #8
Sådan, som jeg har skrevet funktionen skal du nok bruge andre values:

<form method="POST" action="index.htm" name="F1">
  <input type="checkbox" name="C1" value="ADMIN">Adgang til administration</p>

  <p><input type="checkbox" name="C1" value="R1">Rettighed 1</p>
  <p><input type="checkbox" name="C1" value="R2">Rettighed 2</p>
</form>

-- for den vil kun tage dem med, som er afkrydset ...

-- det kan nemt ændres til, at den bare skriver alle values !-)
Avatar billede phliplip Nybegynder
07. december 2003 - 17:16 #9
roenving styrer verden :D Mange tak ! Nu virker det 120% ;D

Smid lige et svar så du kan få pointz :P
Avatar billede roenving Novice
07. december 2003 - 17:18 #10
Velbekomme '-)
Avatar billede roenving Novice
07. december 2003 - 18:58 #11
-- og tak for points ;~}
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