javascript - 在提交表单时使用DTM获取输入字段值

标签 javascript adobe adobe-analytics

我有两个输入字段,分别具有用户访问卡和密码。然后用户单击“提交”按钮进行身份验证。

我在我的应用程序中使用DTM来捕获用户导航,但我也想将这些字段的值获取到DTM中,以便我知道用户是谁。




这是我尝试过的,但是没有运气。


创建的数据元素如下:


enter image description here

并创建了基于事件的规则。但不确定如何获取要在报告中显示的值:

enter image description here

谢谢你的帮助。

最佳答案

范例表格




由于您没有发布表单代码的外观,因此这是一个基于我在发布的屏幕快照中看到的内容的简单表单,我将在下面的示例中使用它。

<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”。由于要捕获用户输入的值,因此应从下拉列表中选择“值”。



将以上所有内容放在一起,您应该有两个看起来像这样的数据元素(一个用于用户名字段,一个用于密码字段;下面仅显示一个):

enter image description here


  事件基本规则




好的,首先,让我们回顾一下您做错了什么。

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值。这也需要删除。



综上所述,基于事件的规则的“条件”部分应如下所示:

enter image description here

但同样,理想情况下,您的条件应该更复杂,以更独特地针对您的表单。

引用数据元素

最后,您可以引用输入字段,以使用%data_element%语法填充各个“工具”部分中的任何字段。例如,您可以像这样填充几个Adobe Analytics eVar(数据元素名称反映了我上面创建的示例):

enter image description here

或者,您可以在自定义代码框中使用javascript语法引用它们,例如_satellite.getVar('form_userName');


  补充说明




1)我强烈建议您不要捕获/跟踪此类信息。首先,根据您帖子中的上下文线索,看起来这可以算作个人身份信息(PII),该信息受到许多国家(地区)法律的保护。其次,通常来说,捕获此信息并将其发送到Adobe(或其他任何地方)会带来很大的安全风险。总体而言,捕获此类数据实际上是在要求罚款,提起诉讼等。

2)请注意(假设满足所有条件),“提交”事件类型将在用户单击“提交”按钮时进行跟踪,这与用户成功完成表单(用有效的方法填写所有表单字段)不一定相同输入等)。我不知道您的要求的全部背景/动机,但总的来说,大多数人只打算在成功完成表单后捕获事件/数据(有时会分别跟踪表单错误)。

关于javascript - 在提交表单时使用DTM获取输入字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352285/

相关文章:

android - 如何自动验证移动应用程序的 omniture 事件?

javascript - 跟踪从自定义 HTML5 视频播放器到 Omniture 媒体模块的视频里程碑?

javascript - 如何确保在触发 Web 分析代码之前发生 JS 重定向?

javascript - 如何在卡片中将我的网页分享到 Twitter

javascript - 使用 jquery 在克隆的 div 内部绑定(bind)操作

javascript - 将 2 个 div 放入 1 个 div 中并以 innerHtml 形式返回

Flash Builder 启动失败 - 无效的应用程序描述符 : Unknown namespace

javascript - Office 365 加载项 - 如何在加载项 Windows 之间进行通信

iphone - #error 1107 在 iPhone 上运行 flash 游戏时,使用 Adob​​e Air

android - 如何让我的 AIR (flash as3) 应用程序在 Android 上全屏显示?