2014-02-09 47 views
0

我有這個應用程序,我想要啓用使用javascript的asp.net按鈕。 JavaScript代碼:使用javascript啓用asp.net按鈕

function Enable() { 
    document.getElementById('<%= Begin.ClientID %>').disabled = false; 
} 

天冬氨酸按鈕:

<asp:Button ID="Begin" runat="server" Text="Submit" OnClick="Button1_Click"/> 

我使用ClientScriptBlock調用啓用功能:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Begin.Enabled = false; 
    ClientScript.RegisterClientScriptBlock(GetType(), "EnableButton", "Enable();", true); 
} 

然而,當我運行應用程序,我得到一個錯誤:

0x800a138f - Microsoft JScript runtime error: 'document.getElementById(...)' is null or not an object

任何人都可以幫助我嗎?

如果用戶在瀏覽器上激活了JavaScript,我希望這樣做。如果JavaScript未啓用,該按鈕將保持禁用狀態。

+0

如果取代'RegisterClientScriptBlock'您嘗試'RegisterStartupScript'? –

+0

我得到相同的錯誤 –

+0

你可以在*渲染* ASPX頁面看到按鈕的HTML標記是什麼樣的?另外,你的JavaScript函數是嵌入到ASPX文件還是在單獨的JS文件中? –

回答

0

看來,JavaScript代碼被放置在一個單獨的JavaScript文件。但你似乎已經在其中使用了一些<% %>服務器端標籤,這顯然不會被處理。這些標籤只能在ASPX頁面中使用。所以我想,你的ASPX頁面中,你需要聲明一個變量:

<script type="text/javascript"> 
    var beginClientId = '<%= Begin.ClientID %>'; 
</script> 

,然後裏面的單獨js文件,你可以使用它:

function Enable() { 
    document.getElementById(beginClientId).disabled = false; 
} 

或者,如果你正在使用ASP.NET 4.0只是把static or predicatble ids

<system.web> 
    <pages clientIDMode="Static"></pages> 
    <compilation debug="true" targetFramework="4.0" /> 
</system.web> 
+0

如果我使用這個,我得到0x800a1391-微軟JScript運行時錯誤:'beginClientId'是未定義的錯誤 –

+0

是的,它工作正常謝謝! –

+0

這是因爲你需要包含你的腳本** AFTER **聲明全局變量的部分。但是使用靜態的ClientIds更好。 –