簡體   English   中英

ASP.Net如何執行動態JavaScript並防止回發

[英]ASP.Net How do I execute a dynamic JavaScript and prevent a postback

我有ASP按鈕和2個標簽。

<asp:Button runat="server" ID="btnHide" />
<asp:Label runat="server" ID="lblName"></asp:Label>
<asp:Label runat="server" ID="lblPosition"></asp:Label>

我創建了一個動態JS腳本。

string jsbtnHide = @"document.getElementByID('" + lblName.ClientID + @"').value = '';
document.getElementByID('" + lblPosition.ClientID + @"').style.display = 'none';";

我將腳本分配給按鈕。 我已經嘗試過“ OnClick”和“ OnClientClick”。

btnHide.Attributes.Add("OnClick", jsbtnHide);

但是,我無法使腳本成功執行且沒有回發。 我嘗試添加OnClientClick =“ return false;” 動態和ascx文件。 動態地似乎被忽略了,盡管它在FireBug中看起來是正確的。 OnClick似乎並沒有阻止回發。 當腳本運行時,lblName不會更改為”,也沒有一次可以使用。

我究竟做錯了什么? 我去過這里好幾天了:(

您可以使用一個好的技巧,只需將點擊代碼更改為此

string jsbtnHide = @"document.getElementByID('" + lblName.ClientID + @"').value = '';
document.getElementByID('" + lblPosition.ClientID + @"').style.display = 'none';return;";

在代碼末尾添加return,以防止調用回發事件

嘗試將要執行的JS代碼包裝在JS函數中,然后使用該函數和附加的return false語句將按鈕連接起來。

像這樣:

public string DynamicJSCode; //Page level

//Page_Load

    DynamicJSCode = @"function doSomeWork(){document.getElementById('" + lblName.ClientID + @"').innerText= '';
    document.getElementById('" + lblPosition.ClientID + @"').style.display = 'none'; return false;}";

然后,您可以使用屬性(或任何其他方式)將上述JS嵌入頁面中。

<script type='text/javascript' language='javascript'>
<%= DynamicJSCode %>
</script>

然后將功能連接到按鈕,如下所示:

btnHide.Attributes.Add("onclick", "return doSomeWork();");

為了防止按鈕控件不回發,您將不​​得不使用return; 致電(毫無疑問)。

(根據我的理解),這將稍微易於​​維護,然后您也不需要在后面的代碼中附加按鈕事件處理程序附件。 然后,您可以在標記本身中將JS函數調用分配給OnClientClick事件,並且始終會動態生成執行的代碼。

<asp:Button runat="server" ID="btnHide" OnClientClick='doSomeWork();return false;' />

無論功能的大小或重要性如何,始終建議編寫具有更好可維護性的代碼。

希望能幫助到你!

暫無
暫無

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

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