我有两个输入字段,分别具有用户访问卡和密码。然后用户单击“提交”按钮进行身份验证。
我在我的应用程序中使用DTM来捕获用户导航,但我也想将这些字段的值获取到DTM中,以便我知道用户是谁。
这是我尝试过的,但是没有运气。
创建的数据元素如下:
并创建了基于事件的规则。但不确定如何获取要在报告中显示的值:
谢谢你的帮助。
最佳答案
范例表格
由于您没有发布表单代码的外观,因此这是一个基于我在发布的屏幕快照中看到的内容的简单表单,我将在下面的示例中使用它。
<form id='someForm'>
User Name <input type='text' name='userName'><br>
Password <input type='password' name='userPass'><br>
<input type='submit' value='submit' />
</form>
数据元素
好的,首先,让我们回顾一下您做错了什么。
1)您说过要捕获两个表单域,但是只有一个数据元素...也许吗?您在问题中并未真正传达出这一点。由于您在其余所有屏幕截图中所做的工作,我只是做了很多假设。但要明确:您应该有两个单独的数据元素,每个字段一个。
2)您使用的CSS选择器链值只是
input
,因此它将选择页面上的第一个输入字段,该字段可能与您要捕获的输入字段之一一致,也可能不一致。因此,您需要使用一个CSS选择器,该选择器对于要捕获的输入字段是唯一的。像input[name="userName"]
这样简单的东西可能就足够了(但是我看不到您的网站就无法确认这一点)。您需要为为其他输入字段(例如input[name="userPass"]
)创建的第二个数据元素执行相同的操作3)在“获取值”下拉列表中,选择“名称”。这意味着,如果您有例如
<input type='text' name='foo'>
,它将返回“ foo”。由于要捕获用户输入的值,因此应从下拉列表中选择“值”。解
将以上所有内容放在一起,您应该有两个看起来像这样的数据元素(一个用于用户名字段,一个用于密码字段;下面仅显示一个):
事件基本规则
好的,首先,让我们回顾一下您做错了什么。
1)您在元素标签或选择器中指定的值为
input
。您没有提交输入字段;您正在提交表格。输入字段甚至没有提交事件处理程序!您的事件类型为“提交”,因此,元素标记或选择器至少应为form
。但是真的2)理想情况下,您应该使用CSS选择器,该选择器可以更直接和唯一地定位要为其触发规则的表单。例如,表单可能具有
id
属性,您可以在CSS选择器中定位该属性。或者表单可能在特定页面上,因此您可以基于URL添加其他条件。用来唯一标识表单的CSS选择器或其他条件的组合取决于网站的设置方式。在上面的示例表单中,我添加了id
属性,因此可以将form#someForm
用作CSS选择器。3)您选中了“手动分配属性和属性”复选框,然后添加了两个“属性=值”项。这告诉DTM仅在输入具有值为“ userName”的
name
属性并且其值为name
属性时触发规则。好吧,name
不能同时有两个值,现在可以了!<input name='foo' name='bar'> <!--
bad!
-->
所有这些都需要删除,因为再次(从#1开始),您应该定位
form
而不是input
字段。4)为了获得良好的效果,您似乎添加了“数据”>“自定义”类型的“规则条件”,但是代码框为空。仅当框返回真实值时,规则才会触发。由于该框中没有代码,它将返回
undefined
(如果未返回任何内容,则为javascript函数返回的默认值),它是一个false值。这也需要删除。解
综上所述,基于事件的规则的“条件”部分应如下所示:
但同样,理想情况下,您的条件应该更复杂,以更独特地针对您的表单。
引用数据元素
最后,您可以引用输入字段,以使用
%data_element%
语法填充各个“工具”部分中的任何字段。例如,您可以像这样填充几个Adobe Analytics eVar(数据元素名称反映了我上面创建的示例):或者,您可以在自定义代码框中使用javascript语法引用它们,例如
_satellite.getVar('form_userName');
补充说明
1)我强烈建议您不要捕获/跟踪此类信息。首先,根据您帖子中的上下文线索,看起来这可以算作个人身份信息(PII),该信息受到许多国家(地区)法律的保护。其次,通常来说,捕获此信息并将其发送到Adobe(或其他任何地方)会带来很大的安全风险。总体而言,捕获此类数据实际上是在要求罚款,提起诉讼等。
2)请注意(假设满足所有条件),“提交”事件类型将在用户单击“提交”按钮时进行跟踪,这与用户成功完成表单(用有效的方法填写所有表单字段)不一定相同输入等)。我不知道您的要求的全部背景/动机,但总的来说,大多数人只打算在成功完成表单后捕获事件/数据(有时会分别跟踪表单错误)。
关于javascript - 在提交表单时使用DTM获取输入字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352285/