javascript - 如何防止在表单提交中传递空白 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>
非常感谢您的洞察力!
解决方案
由于您将值""
设为空,并且false
在 javascript 中为 y,因此只需在 4 个值语句中的每一个之前放置一个 if 语句:
if (source) document.querySelector("p.source input").value = source;
在长格式中,您是说如果该值存在,则用该值填充元素。否则,不要做任何事情:
if (source) {
document.querySelector("p.source input").value = source;
}
推荐阅读
- django - 如何解决精确查找的 QuerySet 值必须限制为使用切片的一个结果。姜戈
- java - 使用 json 对象映射器在附加的类中填充附加字符串
- jquery - 为什么使用 jquery load() 加载图像时 jquery.lazy 不起作用?
- python - VS 代码是否对不同的 python 终端窗口使用不同的线程?
- c++ - 为什么不能在方法中分配类的数据成员
- daml - 如何在 DAML 中将 Map 的键作为观察者提及?
- git - 项目子模块的maven发布插件
- php - 在 laravel 6 中,当我使用 logoutOtherDevices() 时,其他设备注销但重定向到登录页面。如何将其更改为主页?
- node.js - 按角色统计成员的问题
- apache-flink - Flink Table SQL 中的引用标识符可以使用什么语法?