跟踪与谷歌Analytics(分析)文本框条目(Tracking Textbox Entries w

2019-10-17 11:56发布

我试图捕捉谷歌分析被输入到一个文本框的数据。 我至今的代码是下面,我试图通过Javascript来捕获数据,但我似乎无法得到它的工作。 我使用的CMS平台是Sitecore的。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SalesRepSearch.ascx.cs"     Inherits="USEndoscopy.Website.layouts.USEndoscopy.Sublayouts.SalesRepSearch" %>
<%@ Import Namespace="USEndoscopy.Library.Search" %>

<script type="text/javascript">
    var textbox = document.getElementById('txtZipCode'),
    submitButton = document.getElementById('btnSalesRepSearch');

submitButton.onClick = function () {
    _trackEvent('data-store', textbox.name, textbox.value, 0);
    // 'data-store' can be replaced with whatever category of data you want, for sortability's sake
    // the 0 can be replaced with any other numerical data you want - but it must be numerical
}
</script>
<p></p>
<p>
    <asp:Panel DefaultButton="btnSalesRepSearch" runat="server">
    <asp:TextBox ID="txtZipCode" runat="server" Width="300px"></asp:TextBox>
    <asp:Button ID="btnSalesRepSearch" runat="server" CssClass="buttonregular" Text="Search" OnClick="btnSalesRepSearch_Click" />
    <asp:RequiredFieldValidator ID="reqTxtZipCode" runat="server" ValidationGroup="ZipCode" ControlToValidate="txtZipCode" Display="Dynamic" ErrorMessage="Please enter a valid US Zip code" CssClass="error"></asp:RequiredFieldValidator>
        <asp:RegularExpressionValidator ID="regExTxtZipCode" runat="server"     ValidationExpression="^\d    {5}(-\d{4})?$" ValidationGroup="ZipCode" ControlToValidate="txtZipCode" Display="Dynamic"     ErrorMessage="Please enter a valid US Zip code" CssClass="error"></asp:RegularExpressionValidator>
    </asp:Panel>
</p>

<p>
    <asp:Repeater ID="salesRepContainer" runat="server">
        <ItemTemplate>
            <%# ((SalesRep)Container.DataItem).RepName %><br />
            <%# ((SalesRep)Container.DataItem).Phone %><br />
            <a href="mailto:<%# ((SalesRep)Container.DataItem).Email %>"><%# ((SalesRep)    Container.DataItem).Email %></a><br />
        </ItemTemplate>
    </asp:Repeater>
</p>
<p>
    <sc:Text Field="InternationalMessage" runat="server" />
</p>

Answer 1:

你检查所呈现的HTML源代码? 已经在ASP.Net Web控件的ID结束了的东西完全不同,由于被嵌套在面板?

也许你应该添加一个CSS类这些并使用document.getElementsByClassName

如果您在使用jQuery,那么你可以使用attributeEndsWith选择

$('input[id$="txtZipCode"]');
$('input[id$="btnSalesRepSearch"]')


Answer 2:

这是因为ASP.NET已经改变了ID ,在使它们的时候你的文本框的值。

如果您运行.NET V4或大于添加ClientIDMode="Static"到你的文本框和按钮。 这告诉.NET不改变你的控件的ID。

    <asp:TextBox ID="txtZipCode" runat="server" ClientIDMode="Static" Width="300px"></asp:TextBox>
    <asp:Button ID="btnSalesRepSearch" runat="server" ClientIDMode="Static" CssClass="buttonregular" Text="Search" OnClick="btnSalesRepSearch_Click" />

(.ClientID获取.NET给控制,当它呈现它ID):如果你不是.NET 4改变你的Javascript运行少

    var textbox = document.getElementById('<%= txtZipCode.ClientID %>'),
    submitButton = document.getElementById('<%= btnSalesRepSearch.ClientID %>');

UPDATE

你可能得了您的JavaScript函数试图将一个分配的问题click功能,你的按钮之前,你的按钮在DOM实际可用。

因此,尝试以下操作:

JavaScript函数

function btnSearchClick(){
     var textbox = document.getElementById('txtZipCode');


     // Change your google code to this:

     _gaq.push(['_trackEvent', textbox.name, textbox.value,  0]);

     return true;
 }

并在您的按钮添加属性

 onClientClick="return btnSearchClick()"


文章来源: Tracking Textbox Entries with Google Analytics