Toon posts:

[javascript] iFrame checken op inhoud.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een iframe waarin mensen rich text kunnen editten en submitten. Vervolgens wordt de inhoud naar een hidden textarea verstuurd.

Nu wil ik of de inhoud van het iFrame, of de inhoud van het textframe checken op inhoud. Het vreemde is dat als ik het textframe zichtbaar heb dat er wel goed gechecked wordt en als ik het onzichtbaar maak niet. Dan denkt hij dus dat er wat instaat. Check ik in mijn database, dan zie ik dat er niks instaat. Raar maar waar:

Ik heb de volgende code:
<textarea name="omschrijving" style="DISPLAY: none" cols="50" rows="18" class="formulier_veld" tabindex="3"></textarea><iframe id="iView" style="WIDTH: 585px; HEIGHT: 300px"></iframe></p></td>

en het javascriptje:

function controleer(formulier)
{
var melding = "";
var focus_op_veld = "nee";

formulier.omschrijving.value = "" + iView.document.body.innerHTML + "";

if (formulier.omschrijving.value == "")
{
melding += "- omschrijving\n";
if (focus_op_veld == "nee") formulier.omschrijving.focus();
focus_op_veld = "ja";
}

if (melding !== "")
{
alert("De volgende veld(en) zijn verplicht in te voeren: \n" + melding);
return (false);
}
}

Verwijderd

je kan de code beter tussen [code] tags zetten, maakt het wat overzichtelijker. Wat zit er eigenlijk in je Iframe? ik zie nl. geen src, of mis ik iets?

  • André
  • Registratie: Maart 2002
  • Laatst online: 01-09 14:07

André

Analytics dude

Waarschijnlijk moet je "DISPLAY: none" veranderen in "VISIBILITY: hidden". Want als je display op none zet bestaat hij fysiek niet.

Verwijderd

Topicstarter
Visibility:hidden maakt niks uit helaas.
Ik heb een form met een iFrame en een hidden textarea. Ik type wat in het iFrame en zodra ik op submit druk wordt er een javascriptje aangeroepen die de data naar de hidden textarea kopieert en controleert of er uberhaupt wel wat ingevuld is.

Hierna wordt deze data namelijk in een mySql database gestopt en als er niks in zit, dan is dat zonde. :)

Vreemde is dus dat als ik het textarea visible maak hij wel netjes controleerd of er wat in zit en als ik hem invisible maak dan denkt hij dat er wel wat inzit.

Hieronder de belangrijkste betreffende code:
code:
1
2
3
<form action="i_nieuws.php" method="post" onsubmit="return controleer(this)">
<textarea name="omschrijving" style="Display:none" cols="50" rows="10" class="formulier_veld" tabindex="3"></textarea><iframe id="iView" style="WIDTH: 585px; HEIGHT: 300px"></iframe></p></td>
</form>


Javascript:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function controleer(formulier)
formulier.omschrijving.value = "" + iView.document.body.innerHTML + "";

if (formulier.omschrijving.value == "")
    {
        melding += "- omschrijving\n";
        if (focus_op_veld == "nee") formulier.omschrijving.focus();
        focus_op_veld = "ja";
    }
    
    if (melding !== "")
    {
        alert("De volgende veld(en) zijn verplicht in te voeren: \n" + melding);
        return (false);
    }

Verwijderd

Topicstarter
Niemand een idee over deze kwestie? Alle hulp is welkom.

  • André
  • Registratie: Maart 2002
  • Laatst online: 01-09 14:07

André

Analytics dude

Verwijderd schreef op 28 augustus 2002 @ 17:10:
Javascript:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function controleer(formulier)
formulier.omschrijving.value = "" + iView.document.body.innerHTML + "";

if (formulier.omschrijving.value == "")
    {
        melding += "- omschrijving\n";
        if (focus_op_veld == "nee") formulier.omschrijving.focus();
        focus_op_veld = "ja";
    }
    
    if (melding !== "")
    {
        alert("De volgende veld(en) zijn verplicht in te voeren: \n" + melding);
        return (false);
    }
Ten eerste de functie controleer heeft geen begin { en geen eind }, ten tweede in de zin formulier.omschrijving.value = "" + iView.document.body.innerHTML + "" kun je de accolades weghalen. Ten derde melding += "- omschrijving\n", waarom += en niet gewoon = want melding is nog niet gedefinieerd. Ten vierde if (melding !== "") heb ik nog nooit van gehoord, het is altijd nog gewoon !=. Ten vijfde return (false) word gewoon return false.

Dus conclusie:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function controleer(formulier)
{
  var melding = "";
  formulier.omschrijving.value = iView.document.body.innerHTML;

  if (formulier.omschrijving.value == "")
  {
    melding += "- omschrijving\n";
  }
      
  if (melding != "")
  {
    alert("De volgende veld(en) zijn verplicht in te voeren: \n" + melding);
    return false;
  }
}

:7 _/-\o_

Verwijderd

Topicstarter
Helaas, dit maakt geen verschil, hij controleert nog steeds de inhoud niet correct. Wel bedankt voor de tips. Ik zal even de complete functie laten zien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function controleer(formulier)
{
    var melding = "";
    var focus_op_veld = "nee";
    
    formulier.omschrijving.value = iView.document.body.innerHTML;
        
    if (formulier.titel.value == "")
    {
        melding += "- titel\n";
        if (focus_op_veld == "nee") formulier.titel.focus();
        focus_op_veld = "ja";
    }
    if (formulier.datum.value == "")
    {
        melding += "- datum\n";
        if (focus_op_veld == "nee") formulier.datum.focus();
        focus_op_veld = "ja";
    }
    if (formulier.omschrijving.value == "")
    {
        melding = "- omschrijving\n";
        if (focus_op_veld == "nee") formulier.omschrijving.focus();
        focus_op_veld = "ja";
    }
    
    if (melding != "")
    {
        alert("De volgende veld(en) zijn verplicht in te voeren: \n" + melding);
        return false;
    }
}


Het vreemde is dat hij de titel en datum e.d. wel goed controleert. Zodra ik de textarea style niet op hidden zet dan werkt het ook gewoon goed alleen zie je dan die lelijke textarea er ook nog eens bij. Ik wil alleen het iframe zien. Ziet iemand wat ik fout doe?

  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Ik heb geen idee waarom dat fout gaat maar kan dit dan geen oplossing zijn:
<textarea name="textarea1" style="width:0px;height:0px;"> :?

Verwijderd

Topicstarter
Dat was hem, nu werkt hij perfect. Bedankt. Wel vaag dat het hidden niet werkt.

  • André
  • Registratie: Maart 2002
  • Laatst online: 01-09 14:07

André

Analytics dude

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
  <head>
    <title>Test</title>
  </head>
  <body>

    <form action="i_nieuws.php" method="post" onsubmit="return controleer(this)">
      <textarea name="omschrijving" style="Display:none" cols="50" rows="10" class="formulier_veld" tabindex="3"></textarea>
      <input type="submit">
    </form>
    <iframe id="iView" style="WIDTH: 585px; HEIGHT: 300px"></iframe>

    <script language="javascript">

    function controleer(formulier)
    {
      var melding = "";
      formulier.omschrijving.value = iView.document.body.innerHTML;

      if (formulier.omschrijving.value == "")
      {
        melding += "- omschrijving\n";
      }
      
      if (melding != "")
      {
        alert("De volgende veld(en) zijn verplicht in te voeren: \n" + melding);
        return false;
      }
    }
    </script>

  </body>
</html>

Dit werkt bij mij perfect, ook al staat de textarea op hidden. :)
Pagina: 1