动态更改字符串 - 未提交正确的值?

时间:2018-03-16 20:01:34

标签: javascript jquery forms sharpspring

我最近发布了另一个关于如何将内容添加到字符串(Dynamically change string with JS?)的问题,我在这方面取得了进展,但似乎没有提交更新的变量。我错过了什么吗?

这是我的代码:

<script type="text/javascript">
    var selections = 'Gender, ';
    jQuery(".add-to-form").click(function () {
      var title = jQuery(this).attr("title");
      selections += title + ', ';
      console.log(selections);
    });
    var ss_form = {'account': 'XYZ', 'formID': 'XYZ'};
    ss_form.width = '100%';
    ss_form.height = '1000';
    ss_form.domain = 'app-XYZ.marketingautomation.services';
    ss_form.hidden = {'field_XXXXX': selections }; 
</script>

这非常有效,因为正确的值显示在控制台日志中,但是当我提交表单并查看SharpSpring时,唯一的值是初始变量值(Gender,)。我是否需要以某种方式刷新隐藏字段中的变量值?

感谢所有帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

在页面加载时执行以下行:

ss_form.hidden = {'field_XXXXX': selections }; 

这会分配selections的值,因为它当时是 field_XXXXX属性是一个单独的变量,在以后为selections分配不同的值时不会更改。

因此,当点击事件触发时,您将新的(更长的)值分配给selections,那么只有该变量会发生变化。它与上面的房产无关。

如何解决?只需对点击处理程序中的ss_form.hidden.field_XXXXX属性执行另一项任务:

jQuery(".add-to-form").click(function () {
  var title = jQuery(this).attr("title");
  selections += title + ', ';
  ss_form.hidden.field_XXXXX = selections; // <-------
  console.log(selections);
});

我认为ss_form.hidden是一种API驱动的方式来设置隐藏的input元素,这是有效的。如果没有,请确保识别需要获取新值的input元素,如下所示:

$('#id_of_hidden_input').val(selections);