Javascript 从脚本获取即时计算
我正在使用计算字段对重力形式进行一些测试,如下所示:Javascript 从脚本获取即时计算,javascript,jquery,gravity-forms-plugin,Javascript,Jquery,Gravity Forms Plugin,我正在使用计算字段对重力形式进行一些测试,如下所示: NumberA {9} - NumberB {11} 结果立即显示,无需任何额外操作 但我无法将此脚本指定给HTML字段类型,该行为与上面示例中的行为一样是即时的: <script> gform.addFilter ('gform_calculation_result', function (result, FormulaField, formId, calcObj) { if (formulaField.field
NumberA {9} - NumberB {11}
结果立即显示,无需任何额外操作
但我无法将此脚本指定给HTML字段类型,该行为与上面示例中的行为一样是即时的:
<script>
gform.addFilter ('gform_calculation_result', function (result, FormulaField, formId, calcObj) {
if (formulaField.field_id == "2") {
var num = jQuery ('# input_6_1') val ().;
result = Math.pow (num, 3);
}
return result;
});
</ script>
但结果是一样的。我不能马上得到计算结果
更新2:
新的尝试,但没有结果
<script>
function f1( param1, callbackFunction ) {
alert( 'Started F1. \n\n Parameter: ' + param1);
callbackFunction ();
}
f1 ( jQuery('#input_6_1').val(), function() {
alert( 'f1, execute.' );
gform.addFilter( 'gform_calculation_result', function(result, formulaField, formId, calcObj ){
if ( formulaField.field_id == "2" ){
var num = jQuery('#input_6_1').val();
result = Math.pow(num, 3);
}
f1 (result);
});
});
</script>
当我使用Javascript控制台时,我在这一行得到以下错误:“UncaughtTypeError:undefined不是一个函数。你需要了解这些函数是异步的。我从未使用重力表单,但Javascript原理是一样的 还有一些语法问题,JS区分大小写,所以要正确使用大小写
gform.addFilter ('gform_calculation_result',
function (result, formulaField, formId, calcObj) { // is excuted AFTER the addFilter
if (formulaField.field_id == "2") {
var num = $('#input_6_1').val(); // not sure how you got your syntax
result = Math.pow (num, 3);
$("#someResultContainer").html("the result is "+num);
}
// return result; this is not useful here
});
更新
我相信你需要在gform插件触发后执行过滤器
差不多
$(function () {
if (typeof gf_global == 'undefined') var gf_global = {
"gf_currency_config": {
"name": "D\u00f3lar Americano",
"symbol_left": "$",
"symbol_right": "",
"symbol_padding": "",
"thousand_separator": ",",
"decimal_separator": ".",
"decimals": 2
},
"base_url": "http:\/\/localhost\/wp\/wp-content\/plugins\/gravityforms",
"number_formats": [],
"spinnerUrl": "http:\/\/localhost\/wp\/wp-content\/plugins\/gravityforms\/images\/spinner.gif"
};
$(document).bind('gform_post_render', function (event, formId, currentPage) {
if (formId == 6) {
gf_global["number_formats"][6] = {
"1": "decimal_dot",
"2": "decimal_dot",
"3": false
};
new GFCalc(6, [{
"field_id": 2,
"formula": "{Number ---- 2:2}",
"rounding": ""
}]);
}
});
$(document).bind('gform_post_conditional_logic', function (event, formId, fields, isInit) {
gform.addFilter('gform_calculation_result', function(result, formulaField, formId, calcObj) {
var num = jQuery('#input_6_1').val();
var result = Math.pow(num, 3);
window.console&&console.log(result);
$("input_6_2").html("the result is " + num);
});
});
$(document).trigger('gform_post_render', [6, 1]);
})
gform_calculation_结果过滤器仅在表单上存在具有活动计算功能的数字或乘积字段时运行。您需要读取回调并将
返回结果更改为更新meresult(result)
我正在阅读有关如何执行回调的内容,我已经了解了以下代码:函数do\a(回调){gform.addFilter('gform_calculation_result',函数(result,formulaField,formId,calcObj){if(formulaField.field_id==“2”){var num=jQuery('#input_6_1').val();result=Math.pow(num,3)}返回结果;}函数do_b(){console.log(“do_b
:现在我们可以确保do_b
出现在do_a
”;}do_a(函数(){do_b();})之后;但结果是一样的。我无法立即获得计算结果。请更新您的问题,而不是在注释中粘贴代码。无论如何,您仍然尝试返回结果,而不是执行结果的过程。请将语法更改为“var num=jQuery('#input_6_1').val()”,并添加以下代码:“$(“#input_6_2”).html(“结果是”+num);”。但我没有得到任何结果。控制台中有任何消息?(F12)Ans将您的警报更改为window.console&&console.log(“消息”)
在消息控制台中我得到:“未捕获类型错误:未定义不是函数”。它在de container行上。您当然需要添加一个具有您选择的ID的容器,并更改一些ResultContainer以在字段input_6_2中反映这一点。我已激活功能计算检查。richardW8k,您的代码工作正常,但我需要中间操作的结果。我只有在按下input_6_1上的数字之前才能获得它按Tab键两次,然后按input_6_2显示结果。
$("input_6_2").html("the result is "+num);
gform.addFilter ('gform_calculation_result',
function (result, formulaField, formId, calcObj) { // is excuted AFTER the addFilter
if (formulaField.field_id == "2") {
var num = $('#input_6_1').val(); // not sure how you got your syntax
result = Math.pow (num, 3);
$("#someResultContainer").html("the result is "+num);
}
// return result; this is not useful here
});
$(function () {
if (typeof gf_global == 'undefined') var gf_global = {
"gf_currency_config": {
"name": "D\u00f3lar Americano",
"symbol_left": "$",
"symbol_right": "",
"symbol_padding": "",
"thousand_separator": ",",
"decimal_separator": ".",
"decimals": 2
},
"base_url": "http:\/\/localhost\/wp\/wp-content\/plugins\/gravityforms",
"number_formats": [],
"spinnerUrl": "http:\/\/localhost\/wp\/wp-content\/plugins\/gravityforms\/images\/spinner.gif"
};
$(document).bind('gform_post_render', function (event, formId, currentPage) {
if (formId == 6) {
gf_global["number_formats"][6] = {
"1": "decimal_dot",
"2": "decimal_dot",
"3": false
};
new GFCalc(6, [{
"field_id": 2,
"formula": "{Number ---- 2:2}",
"rounding": ""
}]);
}
});
$(document).bind('gform_post_conditional_logic', function (event, formId, fields, isInit) {
gform.addFilter('gform_calculation_result', function(result, formulaField, formId, calcObj) {
var num = jQuery('#input_6_1').val();
var result = Math.pow(num, 3);
window.console&&console.log(result);
$("input_6_2").html("the result is " + num);
});
});
$(document).trigger('gform_post_render', [6, 1]);
})