Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4

    Problema con sommatoria javascript

    Salve ragazzi, sono nuovo del forum, volevo chiedervi un aiuto riguardo una funzione che non riesco ad integrare nel mio script, in pratica ho creato uno script con una tabella composta da form, nella prima colonna ci sono i prezzi fissi, nella seconda colonna ci sono delle commissioni su cui l'utente può interagire, e nella terza il totale della prima + la seconda, pertanto sono riuscito a fare anche la funzione inversa ovvero modificando il totale anche la commissione (ovvero la seconda colonna su cui l'utente può interagire) varia e viene calcolata la differenza; quello che vorrei fare e su cui chiedo il vostro aiuto è farmi dare l'errore quando nell'ultima colonna del totale viene inserito un valore inferiore del prezzo fisso (che è nella prima colonna).
    Grazie mille in anticipo pertanto posto qui il mio codice dello scipt in attesa di una vostra risposta.

    <html>
    <head>
    <script src="http://code.jquery.com/jquery-1.11.0.min.js">
    </script>
    <script language="javascript" type="text/javascript">

    function startCalc(){
    interval = setInterval("calc()",3);
    }
    function startCalcDifference(formNumber){
    functionSelector="calcDifferenceMat('"+formNumber+ "')";
    intervalDifference = setInterval(functionSelector,3);
    }


    function calcDifferenceMat( formNumber){
    pbSelector="prezzoBase_"+formNumber;
    pSelector="prezzo_"+formNumber;
    commSelector="commissione_"+formNumber;
    pb= (document.getElementById(pbSelector).value)*1;
    price= (document.getElementById(pSelector).value)*1;
    console.log(pb);
    console.log(pSelector);
    console.log(price);
    document.getElementById(commSelector).value=price -pb;
    }


    function calc(){
    pb1=document.formSommatoria.prezzoBase_1.value;
    com1 = document.formSommatoria.commissione_1.value;
    p1= document.formSommatoria.prezzo_1.value;


    document.formSommatoria.prezzo_1.value = (pb1 * 1)+(com1 * 1); <!--important-->






    pb2 = document.formSommatoria.prezzoBase_2.value;
    com2 = document.formSommatoria.commissione_2.value;
    document.formSommatoria.prezzo_2.value = (pb2 * 1)+(com2 * 1);


    pb3 = document.formSommatoria.prezzoBase_3.value;
    com3 = document.formSommatoria.commissione_3.value;
    document.formSommatoria.prezzo_3.value = (pb3 * 1)+(com3 * 1);


    pb4 = document.formSommatoria.prezzoBase_4.value;
    com4 = document.formSommatoria.commissione_4.value;
    document.formSommatoria.prezzo_4.value = (pb4 * 1)+(com4 * 1);


    }
    function stopCalc(){
    clearInterval(interval);
    }
    function stopCalcDifference(){
    clearInterval(intervalDifference);
    }

    </script>
    </head>




    <body onload="calc();">
    <form name="formSommatoria">


    <table>


    <tr id="titolo_campo">

    <td>txt</td>

    <td>price</td>

    <td>commission</td>

    <td>tot</td>

    </tr>

    <tr>

    <td>Materiale 1</td>

    <td><input type=text id="prezzoBase_1" value="150" onBlur="stopCalc();" disabled>
    </td>
    <td>
    <input type=text id="commissione_1" value="" onFocus="startCalc();"onBlur="stopCalc();">
    </td>

    <td>= <input type=text id="prezzo_1" onFocus="startCalcDifference('1');" onBlur="stopCalcDifference();">
    </tr>
    <tr>

    <td>Materiale 2</td>
    <td><input type=text id="prezzoBase_2" value="150" onBlur="stopCalc();" disabled>
    </td>
    <td>
    <input type=text id="commissione_2" value="" onFocus="startCalc();"onBlur="stopCalc();">
    </td>

    <td>= <input type=text id="prezzo_2" onFocus="startCalcDifference('2');" onBlur="stopCalcDifference();">

    </tr>

    <tr>

    <td>Materiale 3</td>

    <td><input type=text id="prezzoBase_3" value="150" onBlur="stopCalc();" disabled>
    </td>

    <td><input type=text id="commissione_3" value="" onFocus="startCalc();"onBlur="stopCalc();">
    </td>

    <td>= <input type=text id="prezzo_3" onFocus="startCalcDifference('3');" onBlur="stopCalcDifference();">

    </tr>

    <tr>

    <td>Materiale 4</td>

    <td><input type=text id="prezzoBase_4" value="150" onBlur="stopCalc();" disabled>
    </td>

    <td><input type=text id="commissione_4" value="" onFocus="startCalc();"onBlur="stopCalc();">
    </td>

    <td>= <input type=text id="prezzo_4" onFocus="startCalcDifference('4');" onBlur="stopCalcDifference();">
    </tr>
    </table>
    </form>
    </body>
    </html>

    PS: scusatemi che non ho dichiarato le variabili, ma il codice è un pò da sistemare.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao e benvenuto, non complicarti la vita rendi il campo totale readonly (di sola lettura)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4
    ciao Andrea molto piacere e grazie mille, se potessi lo farei molto volentieri, purtroppo però devo farla in quel modo.Grazie mille ancora e se puoi darmi una mano te ne sono lieto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4
    ciao Andrea molto piacere e grazie mille, se potessi lo farei molto volentieri, purtroppo però devo farla in quel modo.Grazie mille ancora e se puoi darmi una mano te ne sono lieto.

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    A grandi linee if(prezzoBase_1 < totale_1)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    A grandi linee if(prezzoBase_1 < totale_1)
    Si ho fatto cosi con un messaggio d'errore che compare se viene inserito un valore minore del prezzo base, ma è come se va in loop e non mi da la possibilità di ritornare ad inserire un altro valore. in pratica mi compare il messaggio Alert e premendo ok ritorna di nuovo e non mi fà modificare il campo; come posso fare per fermare il loop e premendo ok andare a riscrivere il campo?

Tag per questa discussione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.