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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止在表单提交中传递空白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>

非常感谢您的见解!

答案

因为你将值""设为空,并且因为这是javascript中的falsey,所以只需在每个4值语句之前放置一个if语句:

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

在长形式中,您说如果值存在,则使用值填充元素。否则,不要做任何事情:

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

以上是关于如何防止在表单提交中传递空白UTM值?的主要内容,如果未能解决你的问题,请参考以下文章

防止表单中的值传递

PHP 表单用post传值不了 跳转出现空白页。。

如何在提交函数的reactjs中将表单值作为FormData传递

提交表单状态防止

如何在表单提交时将 HTML 标签值传递给 PageModel

如何使用 PHP 会话来防止重复提交表单?