Javascript if functie met waarde uit pulldown

Status
Niet open voor verdere reacties.

Muiter

Gebruiker
Lid geworden
11 jul 2008
Berichten
73
Dit script moet een waarde geven in het veld overig_totaal[].
DMV het pulldown menu wordt geschakeld hoe de ingevoerde prijs in veld overig_prijs[]

Ik krijg nu echter geen enkel resultaat.
Als ik de eerste optie kies dan krijg ik de melding 'Deze methode of eigenschap wordt niet ondersteund. Bij de andere 2 opties blijft een document.getElementsByName leeg.

PHP:
// Overig 
function overig_tot_abs(selectVeld, nr) 
{ 
    // Prijs totaal 
    if (document.getElementsByName('overig_eenh[]')[nr].value == 'totaal') 
      { 
        document.getElementsByName('overig_totaal[]')[nr].value  = (document.getElementsByName('overig_prijs[]')[nr].value).toFixed( 2 )  
      } 
    // Prijs kg 
    if (document.getElementsByName('overig_eenh[]')[nr].value ==  'kg') 
      { 
        document.getElementsByName('overig_totaal[]')[nr].value  = (document.getElementsByName('overig_prijs[]')[nr].value * (document.getElementsByName('materiaal_tot_gew[]')[nr].value + document.getElementsByName('plaat_tot_gew[]')[nr].value)).toFixed( 2 )  
      } 
    // Prijs verf opp. 
    if (document.getElementsByName('overig_eenh[]')[nr].value == 'verf_opp') 
      { 
        document.getElementsByName('overig_totaal[]')[nr].value  = (document.getElementsByName('overig_prijs[]')[nr].value * (document.getElementsByName('materiaal_tot_verf_opp[]')[nr].value + document.getElementsByName('plaat_tot_verf_opp[]')[nr].value)).toFixed( 2 )  
      } 
} 


<tr> 
        <td><select name="overig_omsch[]" > 
        <option></option> 
        <?php 
             $sql_overig = "select id, omschrijving from sp_overige_werkzaamheden ORDER BY omschrijving ASC"; 
                $res_overig = mysql_query($sql_overig,$con);  
              while ($row_overig = mysql_fetch_assoc($res_overig)){ 
         ?> 
             <option <?php if($row_overig["omschrijving"] == $overig_omsch[$i]){ echo 'selected="selected"'; } ?> value=<?php echo $row_overig["omschrijving"] ?>><?php echo $row_overig["omschrijving"] ?></option> 
        <?php } ?></select> 
        <?php if($error_overig_omsch == 'ja'){ $error_omschr = $error_omschr_overig_omsch; include('includes/input_error.php'); } ?> 
        </td> 
        <td><select name="overig_eenh[]" onChange="overig_tot_abs(this, <?php echo $i ?>)" > 
        <option></option> 
        <option value="totaal">Totaal</option> 
        <option value="kg">Per Kg</option> 
        <option value="verf_opp">Per 1m2</option> 
        </td> 
        <td><input type="text" name="overig_prijs[]" size="10" value="<?php if($overig_prijs[$i] != ''){ echo $overig_prijs[$i]; } ?>" /></td> 
        <td><input type="text" name="overig_totaal[]" size="10" style="text-align:right;background-color: #f1f1f1" value="<?php if($overig_totaal[$i] != ''){ echo $overig_totaal[$i]; } ?>" readonly="readonly" /></td> 
        <td><input type="text" name="overig_opmerkingen[]" size="75" value="<?php if($overig_opmerkingen[$i] != ''){ echo $overig_opmerkingen[$i]; } ?>" /></td> 
    </tr>
 
Heb je toevallig een online testpagina? Met die php code is het niet helemaal goed te zien (een kopie van een gegenereerde bron kan natuurlijk ook).

Als je de pagina in firefox opent, moet je eens het console (ctrl+shift+J) openen en je pagina refreshen. Deze error messages zijn meestal duidelijker dan die van IE.



:thumb:
 
Heb je toevallig een online testpagina? Met die php code is het
Nee, alles gaat via het Intranet van mij werk.

(een kopie van een gegenereerde bron kan natuurlijk ook)
HTML:
<tr> 
	    <td><select name="overig_omsch[]" > 
	    <option></option> 
	    	 		<option  value=Engineering>Engineering</option> 
			 		<option  value=Inkoop bev.middelen>Inkoop bev.middelen</option> 
			 		<option  value=Inkoop snijwerk>Inkoop snijwerk</option> 
			 		<option  value=Spuiten>Spuiten</option> 
			 		<option  value=Stralen>Stralen</option> 
			 		<option  value=Transport>Transport</option> 
		</select> 
				</td> 
	    <td><select name="overig_eenh[]" onChange="overig_tot_abs(this, 0)" > 
	    <option></option> 
	    <option value="totaal">Totaal</option> 
	    <option value="kg">Per Kg</option> 
	    <option value="verf_opp">Per 1m2</option> 
		</td> 
	    <td><input type="text" name="overig_prijs[]" size="10" value="" /></td> 
	    <td><input type="text" name="overig_totaal[]" size="10" style="text-align:right;background-color: #f1f1f1" value="" readonly="readonly" /></td> 
	    <td><input type="text" name="overig_opmerkingen[]" size="75" value="" /></td> 
	</tr>
 
Ah. Na even wat testen ben ik eruit:
[JS]document.getElementsByName('overig_totaal[]')[nr].value[/JS]
Deze code is valide, maar: zo werkt het niet. Als je een select veranderd, veranderd er aan de <select> tag niets: deze heeft helemaal geen value atribuut!

Probeer iets als de volgende constructie:
[JS]var select = document.getElementByXXXX('xxx');
/* select is nu de handle naar het <select> element */

var geselecteerd = select.options[select.selectedIndex].value;
/* geselecteerde is nu de value die je wilt */[/JS]




:thumb:
 
Werkt helaas niet Vegras.

Ik heb het ook geprobeerd met selectVeld.options[selectVeld.selectedIndex].value echter geen succes.
 
Oh, maar dat komt omdat je nu een vairabele gebruikt welke een naam aangeeft, niet een handle.

zoiets:
[JS]// Overig
function overig_tot_abs(selectVeld, nr)
{
// Prijs totaal

var pTotaal = document.getElementsByName('overig_eenh[]')[nr];
/* handle naar select element */
if (pTotaal.options[pTotaal.selectedIndex].value == 'totaal')
{
//doe iets
}

/* zo ook voor alle anderen */
[/JS]:thumb:
 
Goed bezig Vegras.

De functie zelf werkt goed, dit heb ik gecontroleerd met een alert in elke if functie :thumb:

De formules geven echter nog steeds dezelfde foutmeldingen :confused:
 
Ik heb verder gezocht en nu krijg ik deze error:
document.getElementsByName("overig_prijs[]")[nr].value.toFixed is not a function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan