1

テキストボックスに入力されたデータを Google アナリティクスでキャプチャしようとしています。私がこれまでに持っているコードは以下のとおりです.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>
4

2 に答える 2

1

レンダリングされた HTML のソース コードを確認しましたか? パネルにネストされているため、ASP.Net WebControl ID はまったく別のものになりましたか?

これらに CSS クラスを追加して、document.getElementsByClassNameを使用する必要があるかもしれません。

jQuery を使用している場合は、attributeEndsWithセレクターを使用できます。

$('input[id$="txtZipCode"]');
$('input[id$="btnSalesRepSearch"]')
于 2012-12-10T20:56:00.157 に答える
1

これは、レンダリング時にテキストボックスASP.NETの値が変更されたためです。ID

.net V4 以降を実行している場合ClientIDMode="Static"は、テキスト ボックスとボタンに追加します。これは、コントロールの ID を変更しないように .net に指示します。

    <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" />

.net 4 未満を実行している場合は、Javascript を次のように変更します (.ClientID は、レンダリング時に .net がコントロールに与えた ID を取得します)。

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

アップデート

ボタンが DOM で実際に使用可能になる前にclick、JavaScript 関数がボタンに関数を割り当てようとしているという問題が発生している可能性があります。

したがって、次のことを試してください。

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()"
于 2012-12-10T20:56:35.207 に答える