2015-06-08 20 views
7

In primo luogo, non sono affatto esperto in JavaScript o jQuery. Detto questo, sto usando Gravity Forms per creare un calcolatore di risparmio che contenga esponenti. Ho trovato thread THIS, ma sono confuso su come effettivamente funziona nel calcolo di un valore esponenziale.Utilizzo di esponenti nei calcoli Gravity Forms

Ecco la mia messa a punto:

Ho 3 definite dall'utente campi:

  • importo principale
  • di tasso di interesse
  • Numero di pagamenti mensili

I calcoli attuali sono nascosto all'utente. Ci sono due formule che calcolano subito qui. Il primo è il "calcolo degli utenti" che lavora per trovare un "interesse totale". Il secondo è un "Calcoli fissi" con un tasso di interesse fisso dell'1,95%, anziché il campo definito dall'utente, che lavora per lo stesso obiettivo. A parte il tasso fisso, entrambe le formule sono identiche ei cui risultati sono incorporati in una formula finale priva di esponenti. Per fortuna. Ecco le prime tre campi 'numero' (nome & formula) dopo l'input dell'utente:

'CALC'<br> 
({Interest rate::2}/12)/100 

'MP exponent' 
(1 + {CALC:8}) <---This is the formula that requires an exponent equal to the user-defined "Number of monthly payments" field. 

'MP numerator' 
{CALC:8} * {Principal amount::1} * {MP exponent:10} 

La formula va avanti e incorpora la MP exponent campo più volte. Dato il mio caso qui, posso anche utilizzare lo script di cui sopra (inedito dal suo posto di origine):

<script> 
gform.addFilter('gform_calculation_result', function(result, formulaField, formId, calcObj){  
    if (formulaField.field_id == "2") { 
     var field_five = jQuery('#input_2_5').val(); 
     result = field_five * 12; 
    } 
    return result; 
}); 
</script> 

... per il mio calcolo? Non sono affatto sicuro di come specificare qualcosa di simile in 4 campi separati ... Capisco che questo non sia possibile con Gravity Forms - o certamente non semplice - quindi apprezzo molto ogni aiuto che la comunità può offrirmi.

+0

Hai detto "i calcoli sono nascosti all'utente". Calc, esponente MP e numeratore MP sono impostati su "Solo amministratore" nella scheda Avanzate? Se è così, non sarai in grado di accedervi con javascript (come nel tuo esempio), in modo che non funzioni per te. Potresti, comunque, eseguire tutti i calcoli in javascript con solo i campi visibili all'utente. – Dan

+0

Ci sono stati diversi problemi con il modo in cui stavo andando su questo, in realtà. Sei sotto il frammento del file "functions.php" che ha colpito il chiodo sulla testa. Grazie compagno! – 30hourdays

+0

Contento di aver potuto aiutare. :) – Dan

risposta

1

Lo snippet di javascript che hai usato sopra cambierà ciò che l'utente vede, ma non cambierà i dati del modulo salvati, per dire. Devi invece aggiungere un filtro PHP al file functions.php del tuo tema.

add_filter('gform_calculation_result', function ($result, $formula, $field, $form, $entry) { 
    if ($form['id'] == 1 && $field['id'] == 10) { 
     $base = 1 + (float) rgar($entry, '8'); // '8' should be field ID of Calc 
     $exponent = (float) rgar($entry, '1'); // '1' should be field ID of Number of monthly payments 
     $result = pow($base, $exponent); 
    } 
    return $result; 
}, 10, 5); 

Un avvertimento: questo non cambierà nulla che l'utente "vede" durante la compilazione del modulo. Cambia solo il calcolo finale dopo che l'utente ha premuto il pulsante di invio.

Sarebbe anche più pulito eseguire tutti i calcoli in un filtro come questo invece di utilizzare dati di moduli nascosti.