script met class implementeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jonathan

jonathan

09/10/2007 00:17:00
Quote Anchor link
ik heb een scripje dat afbeelding laad aan de hand van de cijfers die zijn ingevoerd in een textvak. Dit werkt uitstekend!
Aangezien ik mijn formulieren met de class formhandler maak probeer ik het hier ook werkend in te krijgen, maar dit lukt niet.
ik heb het idee dat het scripje bij onkeyup niet wordt aangeroepen.
maar wat hiervan de oorzaak is daar kan ik niet achter komen.

dit is wat ik werkend heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type="text/javascript">

function plaatje(e, id){
var dir = "images/";
var ext = ".JPG";
if(e.value.length > 3 && e.value >= 1600 && e.value <= 1605){document.getElementById(id).src = dir + e.value + ext;}
if(e.value.length <= 3 && e.value < 1600 ){document.getElementById(id).src = dir + 'error.gif';}
}

</script>

<input type="text" name="tekst" onkeyup="plaatje(this, 'mijnplaatje')" size="4" maxlength="4" />
<img src="images/error.gif" id="mijnplaatje" />

<input type="text" name="tekst" onkeyup="plaatje(this, 'mijnplaatje2')" size="4" maxlength="4" />
<img src="images/error.gif" id="mijnplaatje2" />

<input type="text" name="tekst" onkeyup="plaatje(this, 'mijnplaatje3')" size="4" maxlength="4" />
<img src="images/error.gif" id="mijnplaatje3" />


en dit is wat ik met formhandler heb gemaakt maar niet af krijg.
kan iemand misschien kijken wat ik fout heb gedaan? of iets wat ik zou kunnen proberen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
35
36
37
38
39
40
41
42
43
44
<head>
<script type="text/javascript">

function plaatje(e, Id){
var dir = "../images/";
var ext = ".JPG";
if(e.value.length > 3 && e.value >= 1600 && e.value <= 1605){document.getElementById(idsrc = dir + e.value + ext;}
if(e.value.length <= 3 && e.value < 1600 ){document.getElementById(id).src = dir + 'error.gif';}
}

</script>
</head>



<?php

// include the class
include("../FH3/class.FormHandler.php");

// create a new FormHandler object
$form =& new FormHandler();

// some fields.. (see manual for examples)
$form->textField( "test", "test", 0 , 4, 4, 'onkeyup="plaatje(this, "mijnplaatje")"' );
// addHTML
$form -> addHTML(
  "    <img src='../images/error.gif' id='mijnplaatje'/ >"
);


// set the 'commit-after-form' function
$form->onCorrect('doRun');

// display the form
$form->flush();

// the 'commit-after-form' function
function doRun( $data )
{

    echo "Hello ". $data['test'].", you are ".$data['test'] ." years old!";
}


?>
 
PHP hulp

PHP hulp

26/04/2024 20:46:50
 
Jelmer -

Jelmer -

09/10/2007 08:24:00
Quote Anchor link
Probeer eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$form
->textField( "test", "test", 0 , 4, 4, 'onkeyup="plaatje(this, \'mijnplaatje\')"' );
?>

(Let op de quotes in het laatste argument)
 
Jonathan

jonathan

09/10/2007 09:19:00
Quote Anchor link
idd dat was het!!! hierdoor kwam ik erachter dat ik tog nog ergens een klein typ foutje had maar nu werkt het! bedankt!!! kan je me misschien ook uitleggen waarom die back slaches daar moeten staan?

hier is de code dan nog even compleet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
35
36
37
38
39
40
41
42
43
44
<head>
<script type="text/javascript">

function plaatje(e, id){
var dir = "../images/";
var ext = ".JPG";
if(e.value.length > 3 && e.value >= 1600 && e.value <= 1605){document.getElementById(id).src = dir + e.value + ext;}
if(e.value.length <= 3 && e.value < 1600 ){document.getElementById(id).src = dir + 'error.gif';}
}

</script>
</head>



<?php

// include the class
include("../FH3/class.FormHandler.php");

// create a new FormHandler object
$form =& new FormHandler();

// some fields.. (see manual for examples)
$form->textField( "test", "test", 0 , 4, 4, 'onkeyup="plaatje(this, \'mijnplaatje\')"' );
// addHTML
$form -> addHTML(
  "    <img src='../images/error.gif' id='mijnplaatje'/ >"
);


// set the 'commit-after-form' function
$form->onCorrect('doRun');

// display the form
$form->flush();

// the 'commit-after-form' function
function doRun( $data )
{

    echo "Hello ". $data['test'].", you are ".$data['test'] ." years old!";
}


?>
 
Jelmer -

Jelmer -

09/10/2007 09:28:00
Quote Anchor link
Kijk maar eens naar je HTML waneer je die andere quotes gebruikt; je quotes zijn dan dezelfde die onclick heeft, en dus loopt het in de soep.
 
Jonathan

jonathan

09/10/2007 10:28:00
Quote Anchor link
Nu ben ik ook bezig een ander scripje in formhandler te zetten
dit scripje laat een aantal divjes zien aan de hand van de input van een selectfield. dus is 1 geslecteerd dan is div 1 te zien, is 2 geselecteerd dan zijn div 1 en 2 te zien. enz enz enz.
dit scripje heb ik zonder formhandler wel aan de praat.
maar in formhandler lukt het me niet helemaal.
dat wil zeggen dat ik geen foutmeldingen krijg maar dat de divjes ook niet worden weergegeven. dit is wat ik werkend heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<html>
<head>
<title>TEST</title>
<script>
function ShowMenu(num, menu, max)
        {
                //starting at one, loop through until the number chosen by the user
                for(i = 1; i <= num; i++){
                        //add number onto end of menu
                        var menu2 = menu + i;
                        //change visibility to block, or 'visible'
                        document.getElementById(menu2).style.display = 'block';
                }
                //make a number one more than the number inputed
                var num2 = num;
                num2++;
                //hide it if the viewer selects a number lower
                //this will hide every number between the selected number and the maximum
                //ex.  if 3 is selected, hide the <div> cells for 4, 5, and 6
                //loop until max is reached
                while(num2 <= max){
                        var menu3 = menu + num2;
                        //hide
                        document.getElementById(menu3).style.display = 'none';
                        //add one to loop
                        num2=num2+1;
                }
        }
</script>
</head>

<body>
<h3>aantal</h3>
<form action="processorder.php" method="post">
selecteer het aantal

<select name='numflowers' onChange="javascript: ShowMenu(document.getElementById('numflowers').value,'divColor', 2);">
        <option value='0'>Number of Flowers
        <option value='1'>1
        <option value='2'>2
</select>


<div id='divColor1' style="display: none;">
                Choose type of flower 1:<br><br>
                <input type="radio" name="color1" value="red">Red<br>
                <input type="radio" name="color1" value="white">White<br>
                <input type="radio" name="color1" value="yellow">Yellow<br>
</div>

<div id='divColor2' style="display: none;">
                Choose type of flower 2:<br><br>
                <input type="radio" name="color2" value="red">Red<br>
                <input type="radio" name="color2" value="white">White<br>
                <input type="radio" name="color2" value="yellow">Yellow<br>
</div>



<br>
<input type="submit" value="Next Step">
</form>

</body>
</html>


en dit is wat ik in formhandler heb. ik krijg dus geen foutmeldingen.
maar er gebeurt voor de rest ook niks, zit de fout in de div jes? of kan de functie de waardes van het selectfield niet uitlezen?
iemand een idee?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<head>
<script>
function ShowMenu(num, menu, max)
        {
                //starting at one, loop through until the number chosen by the user
                for(i = 1; i <= num; i++){
                        //add number onto end of menu
                        var menu2 = menu + i;
                        //change visibility to block, or 'visible'
                        document.getElementById(menu2).style.display = 'block';
                }
                //make a number one more than the number inputed
                var num2 = num;
                num2++;
                //hide it if the viewer selects a number lower
                //this will hide every number between the selected number and the maximum
                //ex.  if 3 is selected, hide the <div> cells for 4, 5, and 6
                //loop until max is reached
                while(num2 <= max){
                        var menu3 = menu + num2;
                        //hide
                        document.getElementById(menu3).style.display = 'none';
                        //add one to loop
                        num2=num2+1;
                }
        }
</script>
</head>

<?php

// include the class
include("../FH3/class.FormHandler.php");

// create a new FormHandler object
$form =& new FormHandler();


$numflowers = array(
    "0"         => "-- Select --",
    "1"         => "1",
    "2"         => "2"
);

// the field
$form -> selectField("numflowers", "numflowers", $numflowers, FH_NOT_EMPTY, 0, 0, 1, 'onChange="javascript: ShowMenu(document.getElementById(\'numflowers\').value,\'divColor\', 2);"');



$form->addHTML(
"<div id='divColor1' style='display: none;'>".
        "test".
        "test".
"</div>"
);

$form->addHTML(
"<div id='divColor2' style='display: none;'>".
        "test".
        "test".
"</div>"
);

// set the 'commit-after-form' function
$form->onCorrect('doRun');

// display the form
$form->flush();

// the 'commit-after-form' function
function doRun( $data )
{

    echo "Hello ". $data['name'].", you are ".$data['age'] ." years old!";
}


?>
 
Jonathan

jonathan

09/10/2007 21:06:00
Quote Anchor link
iemand een idee kzit echt btje vast...
 
Jelmer -

Jelmer -

09/10/2007 22:53:00
Quote Anchor link
Bij onchange mag je "javascript:" weglaten.

javascript: is net als bijvoorbeeld http:, https: of ssh: de aanduiding voor het protocol in de URL. onchange moet geen URL bevatten, maar geldige javascript-code.
 
Jonathan

jonathan

09/10/2007 23:14:00
Quote Anchor link
he stom had ik kunnen zien! bedankt dat was foutje 1!
Maar heeft voor de werking voor de rest niks uitgemaakt, of heeft me niet op meer ideen gebracht.
iemand nog meer ideen/suggesties?
 
Jelmer -

Jelmer -

09/10/2007 23:30:00
Quote Anchor link
Zou je ook eens de HTML die het geheel produceert kunnen posten?
 
Jonathan

jonathan

09/10/2007 23:43:00
Quote Anchor link
je bedoelt de class denk ik....
dat kan wel maar is wel veel werk denk ik...
ik heb hier wel de url zodat je kan zien hoe het er online uit ziet:
het werkende gedeelte zonder de class:
http://www.vanderwaal.info/test3.php

wat ik tot nu toe heb met de class formhandler maar niet werkend krijg:
http://www.vanderwaal.info/orderinvoer/hide2.php
 
M Ypma

M Ypma

10/10/2007 10:35:00
Quote Anchor link
die 2e URL doet het gewoon bij mij? ik krijg netjes 2 divjes zichtbaar enz
 
Jonathan

jonathan

10/10/2007 11:43:00
Quote Anchor link
hea :S wat vreemd.... heeft het dan te maken browser compatibaliteit
ik heb hem in IE getest maar zie niks!
welke browser gebruik jij?
iemand een idee hoe ik het dan ook in IE werkend kan krijgen?
 
Jonathan

jonathan

10/10/2007 23:09:00
Quote Anchor link
zou nog iemand dit scripje kunnen testen bij michel doet hij het namelijk wel maar bij mij niet, dus ben wel benieuwd hoe het bij de anderen is...
http://www.vanderwaal.info/orderinvoer/hide2.php
 
Jelmer -

Jelmer -

10/10/2007 23:26:00
Quote Anchor link
Aah ik zie het al. Je vraagt [select].value op, maar het select-element zelf heeft geen value. De opties wel. Sommige browsers rekenen dan automatisch de value van het select-element uit op basis van de geselecteerde optie, anderen laten dat aan jou over.

Vervang:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$form -> selectField("numflowers", "numflowers", $numflowers, FH_NOT_EMPTY, 0, 0, 1, 'onChange="javascript: ShowMenu(document.getElementById(\'numflowers\').value,\'divColor\', 2);"');

eens door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$form -> selectField("numflowers", "numflowers", $numflowers, FH_NOT_EMPTY, 0, 0, 1, 'onChange="javascript: ShowMenu(this.options[this.selectedIndex].value,\'divColor\', 2);"');


Zie voor meer informatie deze pagina op Quirksmode.
 
Jonathan

jonathan

11/10/2007 00:35:00
Quote Anchor link
hmmm dit werkt nog niet kga morgen nog maar eens verder kijken
 
Jonathan

jonathan

11/10/2007 14:54:00
Quote Anchor link
ik ben er inmiddels achter waarom het niet werkte,
er was een tabel niet goed afgesloten waardoor de de divjes niet konden worden weergegeven.
bedankt voor jullie reacties!!!!
Gewijzigd op 01/01/1970 01:00:00 door jonathan
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.