2014-01-28 42 views
0

我正在使用一个asp.net更新面板。在这个更新面板中,我有3个下拉框&“提交”按钮。使用javascript,我将一个“点击”事件绑定到提交按钮,以便捕获3个下拉列表的值,但是如果我从下拉列表中选择一个新值,我会执行一个自动回复以更改其他下拉列表的值。这样做会迫使我的页面丢失我的javascript单击事件。如果我删除了更新面板,一切正常。任何想法我怎么能做到这一点?这里是我的代码(我提到我global.js文件必须在页面底部):在updatepanel中丢失javascript click事件

ASPX:

<asp:UpdatePanel ID="updatepanelddlist" runat="server"> 
      <ContentTemplate> 

       <asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="true" DataTextField="Description" 
         DataValueField="id" OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" CssClass="txt sc_dropdown"> 
        </asp:DropDownList> 
        <br/> 
        <asp:DropDownList ID="ddlProduct" runat="server" CssClass="txt sc_dropdown" DataTextField="Description" 
         DataValueField="id" AutoPostBack="true" OnSelectedIndexChanged="ddlProduct_SelectedIndexChanged"> 
        </asp:DropDownList> 
       <br/> 
        <asp:DropDownList ID="ddlFormat" runat="server" CssClass="txt sc_dropdown" DataTextField="Description" 
         DataValueField="id" AutoPostBack="true" OnSelectedIndexChanged="ddlFormat_SelectedIndexChanged"> 
        </asp:DropDownList> 
       <br />      
        <asp:LinkButton ID="btnSearch" runat="server" Text="search" 
         OnClick="btnSearch_Click" Style="float: right;" />      
      </ContentTemplate> 
      </asp:UpdatePanel> 
<script type="text/javascript" src='<%=ResolveUrl("~/Scripts/Tracking/global.js") %>'></script> 

这里是我的global.js文件:

$(document).ready(function() { 
setTracking(); 
}); 

function setTracking() { 
//add a click event 
    $(this).bind('click', function(e) { 
    //do some stuff here 
    }); 
}); 

我该怎么做才能在updatepanel回发中保留我的javascript click事件?

谢谢

+0

mmmh,第一个解决方案,拿出在

与该按钮的选择试试这个,而不是直接结合,在文档绑定我的想法:在Page_Load中,使用Page.RegisterClientScriptBlock添加setTracking()脚本,您是否已经尝试过这种解决方案? – Alessio

+0

你没有绑定点击提交按钮,你将它绑定到窗口对象:$(this).bind('click',..... $(this)[0]是windows对象。 –

回答

1

看起来像你的代码中缺少的东西。你说你绑定了提交按钮,但$(this)不在该按钮的上下文中。

无论如何,只有updatePanel中的控件在提交后才会重新呈现。这在技术上是页面上的新控件,这就是为什么click事件不再受限制的原因。

$(document).on("click", "[id$=btnSearch]", function() { ... }); 

详细了解。对这里: http://api.jquery.com/on/