Avatar billede dannv Nybegynder
03. oktober 2004 - 19:08 Der er 17 kommentarer og
1 løsning

Sende form data fra iframe

Et spørgsmål angående IFRAME til eksperterne.

Jeg har en side hvor jeg vil have en iframe, som kommer til at indeholde en med tiden laaang liste af elementer. Til hvert element hører en checkbox, og brugeren kan så vælge en eller flere. Herefter skal der trykkes på en submit knap, og værdierne fra denne Iframe, skulle gerne sendes...

Jeg kan konstaterer at værdierne inde fra min IFRAME ikke direkte sendes... men jeg kan se at det kan lade sig gøre, men mangler hjælp til en løsning...

Jeg skal have en løsning som er skåret ud i pap, tak!!
Avatar billede dannv Nybegynder
03. oktober 2004 - 19:43 #1
Submit knap befinder sig inde i iframe...
Avatar billede dannv Nybegynder
03. oktober 2004 - 19:43 #2
Der skulle stå: Submit knap befinder sig IKKE inde i iframe
Avatar billede roenving Novice
03. oktober 2004 - 23:46 #3
-- i princippet kan du ikke sende noget, som ligger i et andet window-objekt (som en iframe er !-)

-- men du kan hente værdien onsubmit til et skjult felt i din form:

<script type="text/javascript">
function getValue(f){
  var val = "";
  ifrChecks = window.frames['IFRAMENAVN'].FORMNAVN.CHECKBOXNAVN;
  for(i=0;ifrChecks.elements.length>i;i++){
    if(ifrChecks.checked)val += "," + ifrChecks.value;
  }
  f.MITFELT.value = (val)?val.substring(1):"";
}
</script>

-- her med udgangspunkt i, at du har en lang stribe checkbokse med samme navn, men det er ik' li'e svært at lave det anderledes ...

Formen skal så bl.a. se sådan ud:

<form ... onsubmit="getValue(this);">
  <input type="hidden" name="MITFELT">
...
</form>
Avatar billede dannv Nybegynder
05. oktober 2004 - 13:33 #4
Det virker ikke.... her kommer lige noget html kode...

Først kommer der min 'hoved' side som indeholder javascript'et og iframe:


<html>
<head>
<meta name="author" content="Dann Vestergaard">
<link rel="stylesheet" type="text/css" href="../Style.css">
<script LANGUAGE="JavaScript">
function getValue(f){

  var val = "";
  ifrChecks = window.frames['list_frame'].analysis.idArray;
  for(i=0;ifrChecks.elements.length>i;i++){
    if(ifrChecks.checked)val += "," + ifrChecks.value;
  } 
 
  f.value_field.value = (val)?val.substring(1):"";
}
</script>
<title>Creation of an analysis map - linking analysis to compound</title>
</head>
<body>


    <h2>Create a new analysis map - Step 2/3</h2>
    <img src="../images/Divider1a.png">
    <br>
    <p>Here you must define the analysis, to include in the analysis map</p>
    <center>
    <form method="post" action="http://localhost:8080/chemicalinventory/administration/adminController.jsp?action=new_map&code2=yes&map_id=39" name="list_analysis" onsubmit="getValue(this);">
        <table class="box" cellspacing="1" cellpadding="0" width="750">
            <thead>
                <tr>
                    <th class="blue" width="31">&#63;</th>
                    <th class="blue" width="198">Analysis name</th>
                    <th class="blue" width="464">Description</th>
                    <th class="blue" width="53">Version</th>
                    <th width="15">&nbsp;</th>
                </tr>       
            </thead>
            <tbody>
                <tr>
                    <td colspan="6">
                        <iframe id="list_frame" frameborder="0" scrolling="yes" src="http://localhost:8080/chemicalinventory/administration/adminController.jsp?action=analysis_list"
                                width="750" height="300" marginwidth="0" name="list_frame">
                           
                        </iframe>
                       
                        <input type="hidden" name="value_field">
                      <hr>
                      <hr>
                    </td>
                </tr>               
            </tbody>
        </table>       
       
        <br>
            <input class="submit" type="submit" name="Submit" value="Continue">
            <input class="submit" type="reset" name="reset" value="Reset">
    </FORM>
    </center>
   
</body>
</html> 

-------------------------------------------------------------------------------------

Hernæst kommer den kode som ligger inde i min iframe..

<html>
<head>
<meta name="author" content="Dann Vestergaard">
<link rel="stylesheet" type="text/css" href="../Style.css">
<title>Create a list of analysis</title>
</head>
<body>

<center>
<form method="post" name="analysis">
<table border="0" cellpadding="2" cellspacing="1">

   
    <tr class="normal"><td width="25"><input type="checkbox" name="idArray" value="1 "></td><td width="200">Assay 1</td><td width="475">Dette er beskrivelsen af den første analyse med history på</td><td width="50" align="center">1</td></tr>
    <tr class="blue"><td width="25"><input type="checkbox" name="idArray" value="2 "></td><td width="200">Assay for test</td><td width="475">Nu kommer der lige en kommentar mere..</td><td width="50" align="center">1</td></tr>
    <tr class="normal"><td width="25"><input type="checkbox" name="idArray" value="4 "></td><td width="200">Assay number 400</td><td width="475">XXX...</td><td width="50" align="center">1</td></tr>
    <tr class="blue"><td width="25"><input type="checkbox" name="idArray" value="5 "></td><td width="200">Assay number 5</td><td width="475"></td><td width="50" align="center">1</td></tr>
    <tr class="normal"><td width="25"><input type="checkbox" name="idArray" value="8 "></td><td width="200">HPLC Assay</td><td width="475">Et assay til hplc</td><td width="50" align="center">1</td></tr>
    <tr class="blue"><td width="25"><input type="checkbox" name="idArray" value="3 "></td><td width="200">mlml</td><td width="475"></td><td width="50" align="center">1</td></tr>
</table>
</form>
</center>
</body>
</html>
Avatar billede dannv Nybegynder
05. oktober 2004 - 13:35 #5
Håber du kan hjælpe her.....

Der kommer ikke nogen fejl, men værdien fra mit tekstfelt value_field bliver ikke sendt
Avatar billede dannv Nybegynder
05. oktober 2004 - 13:41 #6
..Det jeg mener er at der ikke bliver overført data til mit tekstfelt...

Som du kan se af ovenstående er min checkboxe samme navn 'name=idArray'.
Avatar billede roenving Novice
05. oktober 2004 - 14:38 #7
-- du mangler document (hvilket jeg selvfølgelig også gjorde !-)

  ifrChecks = window.frames['list_frame'].document.analysis.idArray;
Avatar billede dannv Nybegynder
05. oktober 2004 - 14:52 #8
Nope, forskellen er den samme! Hvis jeg manuelt fylder en value i min hidden text box kan jeg godt fange dette i request.. men der bliver ikke overført noget fra min iframe....
Avatar billede dannv Nybegynder
05. oktober 2004 - 14:55 #9
... mht. til mine check boxe. Brugeren kan vælge flere boxe samtidig... jeg ved ikke om det gør nogen forskel for javascriptet...??
Avatar billede roenving Novice
05. oktober 2004 - 15:01 #10
Nej, scriptet er netop lavet til at opfange flere afkrydsninger, da det jo er den naturlige måde at bruge checkboxe ...

-- Får du ingen script-fejl (Gul advarselstrekant i hjørnet ?-)

-- men hvad sker der, hvis du undlader den fulde sti og i stedet bruger en relativ i iframe-tagget ?o]
Avatar billede dannv Nybegynder
05. oktober 2004 - 15:27 #11
Jeg kan se at der lige kommer en box og der står så.. error on page...

har prøvet med relativ sti, og det gør ingen forskel...
Avatar billede roenving Novice
05. oktober 2004 - 15:31 #12
Så skal du prøve at vise scriptfejl ...

-- jeg stødte i sidste uge ind i en, som havde et problem med at hans Norton (tror jeg !-) blokerede for visning af script-fejl ...
Avatar billede dannv Nybegynder
05. oktober 2004 - 15:36 #13
Følgende fejl gives:

Error: 'ifrChecks.elements.length' is null or not an object

..hjælper det??
Avatar billede roenving Novice
05. oktober 2004 - 15:40 #14
Hwa dælen ...

-- jeg må have kopieret noget andet kode, for det er også en fejl ...

<script type="text/javascript">
function getValue(f){

  var val = "";
  ifrChecks = window.frames['list_frame'].document.analysis.idArray;
  for(i=0;ifrChecks.length>i;i++){
    if(ifrChecks[i].checked)val += "," + ifrChecks[i].value;
  } 
 
  f.value_field.value = (val)?val.substring(1):"";
}
</script>

-- og der var så også flere ...
Avatar billede dannv Nybegynder
05. oktober 2004 - 15:42 #15
ok.. bliver nødt til at afslutte nu.. er tilbage i aften..
Avatar billede dannv Nybegynder
05. oktober 2004 - 20:40 #16
så var den der.. points'ne er klar til afhentning.. bare et lille tillæg.

Resultatet som kommer ud af at trække værdier ud af iframe ser ud som følger: 1 ,2 ,3 kan man ændre den måde strengen blive lavet så det kommer til at se ud sådan 1, 2, 3... Det vil sige komma ummiddelbart efter tal...( :-) )
Avatar billede roenving Novice
06. oktober 2004 - 10:22 #17
<script type="text/javascript">
function getValue(f){

  var val = "";
  ifrChecks = window.frames['list_frame'].document.analysis.idArray;
  for(i=0;ifrChecks.length>i;i++){
    if(ifrChecks[i].checked)val += ", " + ifrChecks[i].value;
  } 
 
  f.value_field.value = (val)?val.substring(2):"";
}
</script>

-- det med mellemrummet kan jeg ikke helt forstå, for det tilføjes ikke før nu ?-)

-- men velbekomme '-)
Avatar billede roenving Novice
09. oktober 2004 - 20:45 #18
-- og tak for point ;~}
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