簡體   English   中英

Ajax/Asp.Net 更新面板問題

[英]Ajax/Asp.Net Update Panel problem

我有一個更新面板,但是一旦更新,它似乎正在從我的一個輸入中刪除 class

這是第一次加載的代碼

<input type="text" class="txt1 hasDatepicker" id="txt1" name="txt1">

這是更新運行后的代碼

<input type="text" class="txt1" id="txt1" name="txt1">

這是運行客戶端的 jQuery

 $(function() {
     $(".txt1").datepicker({ dateFormat: 'D d M yy' }); 
 });

似乎只是在更新運行后刪除了hasDatepicker class 並導致問題。

有什么想法為什么要這樣做?

jQuery 就緒事件只會在頁面第一次加載時觸發。 它沒有檢測到 AJAX 更新甚至從 jQuery 本身調用,因為該頁面已經存在。

However, there is a method similar to Page_Load on the server, if it exists in JavaScript global scope, it gets called once the page loads - in ASP.NET terms, that's either very first time or after partial postback / async update / ajax refresh.

該名稱與 JavaScript 約定略有不同:

function pageLoad(){   
    $(".txt1").datepicker({ dateFormat: 'D d M yy' }); 
}

試試看,如果不起作用,請在評論中告訴我...

另一個答案(獲取腳本管理器引用,然后調用add_pageLoaded()並傳遞一個函數)就像在服務器端執行此操作時一樣this.Load += new....在服務器端,而這個是Page_Load版本(事件線-up 默認啟用)。 當然我的意思是它們在客戶端的對應並不完全相同。 所以,兩者都很好,都應該工作,但如果你有多個加載事件處理程序,第二種方法可能很有用,這會使事情變得比需要的更復雜。

您將需要使用 PageRequestManager,它需要頁面上的 ScriptManager。 您可以將其聲明為<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> ,然后將 PageRequestManager 實例化為:

<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_pageLoaded(SomeFunction);
    prm.add_pageLoaded(function() {});

    function SomeFunction() {}
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM