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:

<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?

<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!"; 
} 

?>
Probeer eens
<?php
$form->textField( "test", "test", 0 , 4, 4, 'onkeyup="plaatje(this, \'mijnplaatje\')"' );
?>
(Let op de quotes in het laatste argument)
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:


<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!"; 
} 

?>
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.
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:

<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?

<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!"; 
} 

?> 
iemand een idee kzit echt btje vast...
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.
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?
Zou je ook eens de HTML die het geheel produceert kunnen posten?
die 2e URL doet het gewoon bij mij? ik krijg netjes 2 divjes zichtbaar enz

Reageren