[英]How do you call a Javascript function from an ASPX control event?
如何從 ASPX 控制事件中調用 Javascript function?
具體來說,我想從 DropDownList 的 SelectedIndexChanged 事件中調用 function。
每次看到這種問題我都會有點緊張,因為十有八九這意味着提問者並不真正理解發生了什么。
當您的 SelectedIndexChanged 事件在服務器上觸發時,它會作為完整回發的一部分觸發。 這意味着要運行該代碼,您的頁面加載代碼的整個 rest 也必須運行。
不僅如此,該代碼作為來自瀏覽器的新 http 請求的結果運行。 就瀏覽器而言,結果中將返回一個全新的頁面。 舊頁面和舊 DOM 被丟棄。 因此,在您的 SelectedIndexChanged 事件代碼運行時,您想要調用的 javascript function 甚至不存在於瀏覽器中。
那么該怎么做呢? 你有幾個選擇:
正如 Muerte 所說,您只需將 javascript 或從后面的代碼調用到頁面上即可。 我個人使用這個:
ClientScript.RegisterClientScriptBlock("customscript", "<script>simple script here</script>")
如果您在頁面上已經有一個更復雜的而不是我擁有的東西,您可以調用 function。
您不能直接從事件中執行此操作,因為 ASPX 控件事件是服務器端的。
您可以做的是在 ASPX 事件中發出 Javascript,該事件將在頁面重新加載時調用 JavaScript function。
例如,如果在您的 ASPX 頁面中有一個名為“DoSomething()”的 Javascript function,則在您的 ASPX 控件事件中添加以下內容:
protected void btnSubmit_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "myEvent", "DoSomething()", true);
}
最后一個 boolean 參數定義自動添加標簽。
在后面的代碼中,通過屬性集合將一些標記附加到服務器端控件。 這假設 function 已經在頁面可用的客戶端腳本文件中。
MyServerDDLControl.Attributes.Add("SelectedIndexChanged", "MyClientSideFunction();");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.