[英]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.