2013-09-26 29 views
0

感謝您花一秒鐘的時間來看這個。我知道你們大多數客戶端腳本編程是一件容易的事情。無論如何,我只是想在頂部發出一條消息,提醒用戶他們的點擊已註冊並禁用該按鈕。爲什麼這個Javascript不啓用這個文本框(aspx)?

< ----下面的代碼---->

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="content"> 
<div> 
    <asp:TextBox BorderStyle="None" Font-Bold="True" Height="15" Width="300" 
        ForeColor="Green" runat="server" ID="MessageBox" Visible="False" Text="Archiving compliance results..."></asp:TextBox> 
</div> 
<table cellpadding="0" cellspacing="0"> 

    <Table STUFF!> .... 
        <span> 
         <asp:ImageButton ID="ArchiveImageButton" runat="server" AlternateText="Archive Compliance" 
          ImageUrl="~/images/Icons/24/452-bank.gif" OnClientClick="archiveIt()" OnClick="btnArchive_Click" ToolTip="Archive compliance results" /> 
        </span> 
    </Table STUFF!> 
</table> 

<script language="javascript" type="text/javascript"> 
    function archiveIt() { 
     window.ArchiveImageButton.enabled = false; 
     window.MessageBox.visible = true; 
    } 
</script> 

+0

你不能做到這一點。您已將文本框控件設置爲在服務器端不可見,因此它不會呈現在頁面上。你可以展示一些根本不存在的東西。此外,Javascript使用'disabled'屬性來判斷一個元素是否被啓用,而不是'enabled'。 – Guffa

回答

1

有兩個問題有額外的東西。首先,您需要使用getElementById來獲取元素。 window.ElementId將無法​​正常工作:

var element = document.getElementById('myId'); 

其次,你的控件有服務器端的ID。當它們呈現給客戶端時,ID將會有所不同。有兩種方法可以解決這個問題。其中,獲得ClientID屬性:

var element = document.getElementById('<%= MyControl.ClientID %>'); 

或兩個,設置ClientIDMode爲靜態的控制:

<asp:TextBox ID="MyTextBox" ClientIDMode="Static" runat="Server" /> 

然後你可以使用:

var element = document.getElementById('MyTextBox'); 

此外,注意, <input>控件沒有visible屬性。你可能會想要.style.display

所以,你的代碼也許應該是這個樣子:

<script language="javascript" type="text/javascript"> 
    function archiveIt() { 
     document.getElementById('<%= ArchiveImageButton.ClientID %>').enabled = false; 
     document.getElementById('<%= MessageBox.ClientID %>').style.display = 'inherit'; 
    } 
</script> 
0

的ID可能不是你所期望的; ASP用他們的容器包裝ID(如Container_ActiveImageButton)。如何像:

<script> 
    function archiveIt(){ 
    var aib = document.getElementById('<%= this.ArchiveImageButton.ClientID; %>'); 
    aib.enabled = false; 
    } 
</script> 

或者你可以用ClientIDMode在控制播放,並使其Static

0

你需要設置的ClientIDMode爲靜態兩個控制,以避免對他們ID