2015-06-08 11 views
7

Erstens bin ich in JavaScript oder jQuery keinesfalls versiert. Davon abgesehen verwende ich Gravity Forms, um einen Ersparnisrechner zu erstellen, der Exponenten enthält. Ich fand THIS Thread, bin aber verwirrt, wie es tatsächlich bei der Berechnung eines exponentiellen Werts funktioniert.Verwenden von Exponenten in Gravity Forms-Berechnungen

Hier ist mein Setup:

Ich habe 3 benutzerdefinierte Felder:

  • Nominalbetrag
  • Zinssatz
  • Anzahl der monatlichen Zahlungen

Die tatsächlichen Berechnungen sind vor dem Benutzer verborgen. Es gibt zwei Formeln, die hier sofort berechnen. Die erste ist die "Benutzerberechnungen", die daran arbeiten, ein "Gesamtinteresse" zu finden. Die zweite ist eine "Fixed calculation" mit einem festen Zinssatz von 1,95% anstelle des benutzerdefinierten Feldes, das auf dasselbe Ziel hinarbeitet. Abgesehen von der festen Rate sind beide Formeln identisch, und ihre Ergebnisse werden in eine endgültige Formel ohne Exponenten einbezogen. Gott sei Dank. Hier sind die ersten drei ‚Anzahl‘ Felder (Name & Formel) nach der Benutzereingabe:

'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} 

Die Formel geht auf und beinhaltet die MP exponent Feld mehrmals. Gegeben mein Fall hier, kann ich auch die oben genannte Skript (ungeschnitten von der Quelle post):

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

... für meine Berechnung? Ich bin mir überhaupt nicht sicher, wie ich sowas in 4 separaten Feldern spezifizieren soll ... Ich verstehe, dass dies mit Gravity Forms nicht möglich ist - oder sicherlich nicht einfach - und ich schätze jede Hilfe, die die Community mir anbietet.

+0

Sie sagten "die Berechnungen sind vor dem Benutzer verborgen." Sind Calc, MP-Exponent und MP-Zähler in der erweiterten Registerkarte auf "Nur Administrator" eingestellt? Wenn dies der Fall ist, können Sie nicht mit JavaScript (wie in Ihrem Beispiel) darauf zugreifen, so dass dies nicht für Sie funktioniert. Sie können jedoch alle Berechnungen in Javascript mit nur den Benutzern sichtbaren Feldern durchführen. – Dan

+0

Es gab mehrere Probleme mit der Art und Weise, wie ich das tat, eigentlich. Du bist unterhalb des Snippets, um die 'functions.php' Datei den Nagel auf den Kopf zu schlagen. Danke, Kumpel! – 30hourdays

+0

Ich bin froh, dass ich helfen konnte. :) – Dan

Antwort

1

Das JavaScript-Snippet, das Sie oben verwendet haben, ändert das, was der Benutzer sieht, aber es wird die gespeicherten Formulardaten nicht ändern. Sie müssen stattdessen einen PHP-Filter zur functions.php-Datei Ihres Themes hinzufügen.

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); 

Eine Warnung: Das wird nichts ändern, dass der Benutzer „sieht“, wenn Sie das Formular ausfüllen. Es wird nur die endgültige Berechnung ändern, nachdem der Benutzer den Submit-Button gedrückt hat.

Es wäre auch sauberer, alle Ihre Berechnungen in einem Filter wie diesem zu tun, anstatt verborgene Formulardaten zu verwenden.