You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GravityForms同表单内动态将两字段拼接赋值至第三字段?

解决Gravity Forms多地址字段同步到Salesforce的问题

方法一:前端实时同步(输入时更新)

利用Gravity Forms内置的jQuery事件,监听地址字段的输入变化,实时将US/Int地址字段的值同步到RealAddress对应字段。

  1. 在WordPress后台「外观」→「自定义」→「额外JS」(或通过代码片段插件添加)插入以下代码:
jQuery(document).ready(function($) {
    // 监听美国地址字段的输入/变化事件
    $('#input_FORMID_USADDR_ID_1, #input_FORMID_USADDR_ID_2, #input_FORMID_USADDR_ID_city, #input_FORMID_USADDR_ID_state, #input_FORMID_USADDR_ID_zip').on('input change', function() {
        $('#input_FORMID_REALADDR_ID_1').val($('#input_FORMID_USADDR_ID_1').val());
        $('#input_FORMID_REALADDR_ID_2').val($('#input_FORMID_USADDR_ID_2').val());
        $('#input_FORMID_REALADDR_ID_city').val($('#input_FORMID_USADDR_ID_city').val());
        $('#input_FORMID_REALADDR_ID_state').val($('#input_FORMID_USADDR_ID_state').val());
        $('#input_FORMID_REALADDR_ID_zip').val($('#input_FORMID_USADDR_ID_zip').val());
    });

    // 监听国际地址字段的输入/变化事件
    $('#input_FORMID_INTADDR_ID_1, #input_FORMID_INTADDR_ID_2, #input_FORMID_INTADDR_ID_city, #input_FORMID_INTADDR_ID_state, #input_FORMID_INTADDR_ID_zip').on('input change', function() {
        $('#input_FORMID_REALADDR_ID_1').val($('#input_FORMID_INTADDR_ID_1').val());
        $('#input_FORMID_REALADDR_ID_2').val($('#input_FORMID_INTADDR_ID_2').val());
        $('#input_FORMID_REALADDR_ID_city').val($('#input_FORMID_INTADDR_ID_city').val());
        $('#input_FORMID_REALADDR_ID_state').val($('#input_FORMID_INTADDR_ID_state').val());
        $('#input_FORMID_REALADDR_ID_zip').val($('#input_FORMID_INTADDR_ID_zip').val());
    });
});
  • 替换FORMID为你的表单ID(可在Gravity Forms表单列表中查看)
  • 替换USADDR_ID、INTADDR_ID、REALADDR_ID为对应地址字段的ID(编辑表单时,每个字段右上角的数字)

方法二:后端提交后同步(更可靠,同步CRM前执行)

使用Gravity Forms的gform_pre_submission钩子,在表单提交后、数据同步到Salesforce前,强制将RealAddress字段的值设置为已填写的US/Int地址对应值。

  1. 在WordPress主题的functions.php文件(或通过代码片段插件)添加以下PHP代码:
add_action('gform_pre_submission_FORMID', 'sync_address_to_real');
function sync_address_to_real($form) {
    // 获取地址字段值(替换为实际字段ID)
    $us_street1 = rgpost('input_USADDR_ID_1');
    $int_street1 = rgpost('input_INTADDR_ID_1');
    
    // 优先使用美国地址,若无则用国际地址
    if (!empty($us_street1)) {
        $_POST['input_REALADDR_ID_1'] = $us_street1;
        $_POST['input_REALADDR_ID_2'] = rgpost('input_USADDR_ID_2');
        $_POST['input_REALADDR_ID_city'] = rgpost('input_USADDR_ID_city');
        $_POST['input_REALADDR_ID_state'] = rgpost('input_USADDR_ID_state');
        $_POST['input_REALADDR_ID_zip'] = rgpost('input_USADDR_ID_zip');
    } else if (!empty($int_street1)) {
        $_POST['input_REALADDR_ID_1'] = $int_street1;
        $_POST['input_REALADDR_ID_2'] = rgpost('input_INTADDR_ID_2');
        $_POST['input_REALADDR_ID_city'] = rgpost('input_INTADDR_ID_city');
        $_POST['input_REALADDR_ID_state'] = rgpost('input_INTADDR_ID_state');
        $_POST['input_REALADDR_ID_zip'] = rgpost('input_INTADDR_ID_zip');
    }
}
  • 替换FORMID为你的表单ID
  • 替换USADDR_ID、INTADDR_ID、REALADDR_ID为对应地址字段的ID
  • rgpost()是Gravity Forms提供的安全函数,用于获取表单提交数据

注意事项

  • 后端方法优先级更高,即使前端JS被禁用,也能保证数据正确同步到Salesforce
  • 将RealAddress中除国家外的字段设置为隐藏(编辑字段时在「高级」选项中勾选「隐藏字段」),避免用户手动修改
  • 测试时分别提交美国和国际地址,检查Salesforce中是否正确接收到RealAddress的同步数据

内容的提问来源于stack exchange,提问作者HirsuteJim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 22:49:54