2014-02-09 3 views
0

У меня есть это приложение, где я хочу включить кнопку asp.net с помощью javascript. JavaScript код:включить кнопку asp.net с помощью javascript

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

Asp кнопка:

<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 - ошибка времени выполнения Microsoft JScript: ошибка« beginClientId »isdefined' –

+0

да, она отлично работает СПАСИБО! –

+0

Это потому, что вам нужно включить свой скрипт ** ПОСЛЕ ** часть, объявляющую глобальную переменную. Но лучше использовать статические ClientIds. –

Смежные вопросы