如何防止在表单提交中传递空白的UTM值?

时间:2019-02-22 16:15:08

标签: javascript forms utm

如果很重要,我正在Pardot工作,但是有一些JavaScript可以将GA utm参数写入隐藏字段。

不幸的是,如果任何值都是空白,它将传递该空白值,并覆盖任何现有值。 重要的是,我必须能够覆盖现有值,但前提是查询字符串中有数据。

是否可以改写默认值?因此,例如,提交的表单没有utm_source,然后我们写Source =“ Organic”或类似的内容。

这是我的代码:

    <script type="text/javascript">
// Parse the URL
function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
// Give the URL parameters variable names
var source = getParameterByName('utm_source');
var medium = getParameterByName('utm_medium');
var campaign = getParameterByName('utm_campaign');
var campaign = getParameterByName('utm_content');

// Put the variable names into the hidden fields in the form. selector should be "p.YOURFIELDNAME input"
document.querySelector("p.source input").value = source;
document.querySelector("p.utm_medium input").value = medium;
document.querySelector("p.utm_campaign input").value = campaign;
document.querySelector("p.utm_content input").value = content;



</script>

非常感谢您的见解!

1 个答案:

答案 0 :(得分:0)

由于您将值""如果为空,并且在javascript中为false y,因此只需在4个值语句中的每个语句前放置一个if语句即可:

if (source) document.querySelector("p.source input").value = source;

以长格式表示,如果存在该值,则使用该值填充元素。否则,什么都不做:

if (source) {
  document.querySelector("p.source input").value = source;
}