2015-06-08 4 views
7

सबसे पहले, मैं जावास्क्रिप्ट या jQuery में किसी भी तरह से नहीं जानता हूं। ऐसा कहा जा रहा है, मैं एक बचत कैलकुलेटर बनाने के लिए गुरुत्वाकर्षण प्रपत्र का उपयोग कर रहा हूं जिसमें एक्सपोनेंट शामिल हैं। मुझे THIS थ्रेड मिला, लेकिन यह उलझन में है कि यह वास्तव में घातीय मूल्य की गणना करने में कैसे काम करता है।गुरुत्वाकर्षण फॉर्म गणनाओं में एक्सपोनेंट का उपयोग

यहाँ मेरी सेटअप है:

मैं 3 उपयोगकर्ता परिभाषित क्षेत्रों है:

  • मूल राशि
  • ब्याज दर
  • मासिक भुगतान

वास्तविक गणना कर रहे हैं की संख्या उपयोगकर्ता से छिपा हुआ यहाँ एक बार में दो सूत्रों की गणना कर रहे हैं। पहला 'कुल ब्याज' खोजने के लिए 'उपयोगकर्ता गणना' काम कर रहा है। दूसरा, एक ही लक्ष्य की ओर काम कर रहे उपयोगकर्ता परिभाषित क्षेत्र की बजाय 1.95% की निश्चित ब्याज दर के साथ 'निश्चित गणना' है। निश्चित दर एक तरफ, दोनों सूत्र समान हैं, और जिसके परिणाम एक्सपोनेंट से मुक्त अंतिम फॉर्मूला में शामिल किए जाते हैं। शुक्र है। यहाँ पहले तीन 'नंबर' उपयोगकर्ता इनपुट के बाद क्षेत्र (नाम & सूत्र) कर रहे हैं:

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

सूत्र पर चला जाता है और MP exponent क्षेत्र को कई बार शामिल किया गया है। मेरी गणना के लिए

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

...: मेरे मामले यहाँ देखते हुए, मैं भी ऊपर उल्लिखित लिपि (इसके स्रोत पद से असंपादित) का उपयोग कर सकते हैं? मुझे यकीन नहीं है कि 4 अलग-अलग क्षेत्रों में ऐसा कुछ कैसे निर्दिष्ट किया जाए ... मैं समझता हूं कि गुरुत्वाकर्षण प्रपत्रों के साथ यह संभव नहीं हो सकता है - या निश्चित रूप से सरल नहीं है - इसलिए मैं समुदाय की पेशकश की किसी भी मदद की बहुत सराहना करता हूं।

+0

आपने कहा "गणना उपयोगकर्ता से छिपी हुई है।" क्या कैल्क, एमपी एक्सपोनेंट, और एमपी संख्याकर्ता उन्नत टैब में "केवल व्यवस्थापक" पर सेट हैं? यदि ऐसा है, तो आप उन्हें जावास्क्रिप्ट (जैसा कि आपके उदाहरण में) के साथ एक्सेस नहीं कर पाएंगे, ताकि यह आपके लिए काम न करे। हालांकि, आप जावास्क्रिप्ट में केवल सभी उपयोगकर्ता-दृश्य फ़ील्ड के साथ सभी गणना कर सकते हैं। – Dan

+0

वास्तव में इसके बारे में कई तरह के मुद्दे थे, वास्तव में। आप स्निपेट से नीचे 'functions.php' फ़ाइल पर हैं, सिर पर नाखून मारा। धन्यवाद दोस्त! – 30hourdays

+0

खुशी है कि मैं मदद कर सकता हूं। :) – Dan

उत्तर

1

ऊपर उपयोग किए गए जावास्क्रिप्ट स्निपेट उपयोगकर्ता को जो बदलता है उसे बदल देगा, लेकिन यह प्रति सहेजे गए फॉर्म डेटा को प्रतिस्थापित नहीं करेगा। इसके बजाय आपको अपनी थीम की functions.php फ़ाइल में एक PHP फ़िल्टर जोड़ने की आवश्यकता है।

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

एक चेतावनी: इस कुछ भी है कि उपयोगकर्ता "देखता है" फ़ॉर्म भरते समय नहीं बदलेगा। उपयोगकर्ता सबमिट बटन हिट करने के बाद ही अंतिम गणना को बदल देगा।

छुपा फॉर्म डेटा का उपयोग करने के बजाय इस तरह के फ़िल्टर में आपकी सभी गणना करने के लिए यह भी क्लीनर होगा।

संबंधित मुद्दे