Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [javascript] accedere a valori di un field in modo variabile

    ciao a tutti, io ho una select di questo tipo:

    codice:
    <select name="fornitore" onChange="javascript:get_sconto()">
    	<option value="1">fornitore 1</option>	
    	<option value="2">fornitore 2</option>	
    	<option value="3">fornitore 3</option>	
    	<option value="5">fornitore 4</option>	
    	<option value="6">fornitore 5</option>	
    </select>
    e un insieme di campi nascosti che per ogni valore della select memorizza un'altro valore

    codice:
    	<input type="hidden" value="21" name="sconto1">
    	<input type="hidden" value="22" name="sconto2">
    	<input type="hidden" value="11" name="sconto3">
    	<input type="hidden" value="65" name="sconto5">
    	<input type="hidden" value="22" name="sconto6">

    vorrei fare un javascript che a seconda dell'opzione selezionata nella select mi aggiorna un campo con il relativo valore nascosto...come posso fare? io pensavo di fare cosi ma non funziona!

    codice:
    function get_sconto(){
    form = document.newitem;
    var prova="sconto"+form.fornitore.value;
    form.prezzo_acq.value=form.prova.value;
    }
    il campo che mi viene generato è giusto :
    prova1..prova2...ecc ma il debug di firefox mi dice:

    Error: form.prova has no properties
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Mi sa che ti stai complicando la vita.

    Perche` usare dei campi hidden, e non un vettore JS?
    codice:
    <script type="text/javascript">
    var scontod = new Array(0, 21, 22, 11, 65, 22);
    
    function get_sconto(ss){
      var ditta = ss.options[ss.selectedIndex].value;
      ss.form.sconto.value = "sconto: " + scontod[ditta];
      var prez = parseFloat(ss.form.prezzo.value);
      ss.form.prezzo_acq.value = prez - (prez*scontod[ditta]/100);
    }
    </script>
    Nel form dovrai avere i campi:
    <input type="text" name="sconto" disabled="true" />
    <input type="text" name="prezzo" />

    Oltre alla tua select, che dovrai modificare in modo da passare l'oggetto alla funzione:
    <select name="fornitore" onchange="get_sconto(this);">

    Nota che nel DOM la parola form indica il form, per cui non puoi usarla come variabile.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    ciao!

    grazie! ci avevo pensato ma non sapevo come fare!

    il problema è che io dovrei riempire l'array javascript con una query in php....come posso fare?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non conosco la sintassi PHP, ma ti do l'idea:

    <script type="text/javascript">
    var scontod = new Array();
    scontod[0] = 0;
    <%php #inizio loop
    print"scontod[$i] = $sconto[$i];"
    #fine loop
    %>

    ...
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    direi che dato che non conosci il php è un'ottima idea!

    ho risolto così, prendendo spunto dalla tua idea:

    codice:
    <script language="JavaScript">
    var sconto=new Array();
    var valore_sconto;
    form = document.newitem;
    
    function controlla_prezzi(){
    
    radio=form.def_prezzo;
    
    	if (radio[0].checked){
    		form.quotazione.disabled=false;
    		form.costo_lav.disabled=false;
    	}else if (radio[1].checked){
    		form.quotazione.disabled=true;
    		form.costo_lav.disabled=true;
    	}
    }
    
    function set_sconto(indice,valore){
    sconto[indice]=valore;
    }
    
    function get_sconto(){
    form = document.newitem;
    valore_sconto = sconto[form.fornitore.value];
    }
    
    function calcola_sconto(){
    form.prezzo_acq.value=form.prezzo_ven.value-(form.prezzo_ven.value/100*valore_sconto);
    }
    </script>
    e la funzione in php

    Codice PHP:
    function elenco_sconti(){

    $elenco = mysql_query("select * from contatti");
    while($rs=mysql_fetch_array($elenco)){
        ?>
        <script>javascript:set_sconto("<? echo $rs["id"]?>","<? echo $rs["sconto"]?>")</script>
        <?
        
    }
    }
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  6. #6
    acc!

    ora ho un alro problema!

    non penso che serva aprire un altro post...credo sia sufficiente un cast ma (float)nomecampo non mi funziona!

    in pratica ho il seguente script:

    codice:
    form.prezzo_ven.value=(form.prezzo_acq.value+(form.prezzo_acq.value/100*form.ricarico2.value));
    il problema è che nel campo prezzo_ven mi compaiono le 2 stringhe concatenate invece che sommate!

    esempio:

    prezzo_Acq=100
    ricarico=10

    prezzo_ven=100+10=110

    lui incece stampa 10010

    come si risolve?

    grazie e scusate...
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ti ho gia` detto di non usare la parola form come nome di variabile. Potresti avere strane sorprese.

    Quello che tu chiami cast, in JS si fa con la funzione parseFloat(str) per i reali, e parseInt(str,10) per gli interi.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Ti ho gia` detto di non usare la parola form
    scusa...ero preso x il funzionamento dello script e non lo avevo ancora modificato!

    ora è tutto ok!

    codice:
    function calcola_prezzi(){
    
    f = document.newitem;
    radio=f.def_prezzo;
    
    	if (radio[0].checked){
    	alert("definizione automatica del prezzo di acquisto e di vendita");
    	f.prezzo_acq.value=(f.quotazione.value+f.costo_lav.value)*f.peso.value;
    	f.prezzo_ven.value=parseFloat(f.prezzo_acq.value)+parseFloat(f.prezzo_acq.value/100*f.ricarico2.value);
    	}else if (radio[1].checked){
    	alert("calcolo automatico del prezzo di acquisto");
    	//se sceglo prezzo automatico calcolo il prezzo di acquisto togliendo dal prezzo di vendita lo sconto del fornitore (non considero l'IVA per ora)
    	f.prezzo_acq.value=f.prezzo_ven.value-(f.prezzo_ven.value/100*valore_sconto);
    	}
    
    }

    grazie dell'aiuto!
    ti offrirò una birra al pedavena!
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.