2012-06-22 41 views
1

我正在運行一些java腳本和一些html控件。一切正常。與Asp.net的Javascript衝突runat =服務器屬性

除了當我添加runat =「server」屬性到html控件,所以我可以在後面的代碼中訪問它時,java腳本函數不起作用。這是常見的事情嗎?有沒有解決方法來使用java腳本的runat =「server」屬性?

或者我如何在後臺代碼中使用運行在服務器屬性中的方式訪問我的Html控件?

困惑。

+0

複製/粘貼問題,請 – HatSoft

+0

EB嗨代碼。你正在推廣你的問題。相反,您需要具體說明您正嘗試通過代碼隱藏訪問哪個控件,否則此線程將變成20個問題的遊戲。 – Jeremy

+0

我們真的需要看到你的代碼來幫助你。也就是說,我懷疑當你將'runat =「server」'添加到HTML控件時,控件的ID正在改變爲'ctl00_OriginalIdHere',這會導致你的javascript中斷。你使用的是什麼版本的asp.net? – Rob

回答

2

這是最有可能發生的歷史,因爲您的標記看起來是這樣的:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
    <div runat="server" id="myDiv"> 
    </div> 
</asp:Content> 

即您使用的是母版或其他什麼東西,充當INamingContainer。這導致是寫出來的標記看起來像這樣的ID:

<div> 
    <div id="ContentPlaceHolder1_myDiv"> 
    </div> 
</div> 

如果你使用asp.net 4您可以通過添加clientidmode="Static"更改爲myDiv標記,你會再拿到:

<div> 
    <div id="myDiv"> 
    </div> 
</div> 

意味着你的JavaScript將再次工作。如果您使用的是早期版本的asp.net,那麼您需要按照SHAKKIR SHABBIR的建議進行操作,並使用<%=myDiv.ClientId%>來引用javascript中的元素,以便獲得asp.net生成的ID的「重命名」版本。

+0

Rob,這對我來說是很好的信息。我不知道ClientIDMode = Static ....感謝您的補充信息! –

+0

好的。謝謝Shakir和Rob。我嘗試了兩種解決方案,並且Rob的工作!我也沒有意識到這個屬性。 Shakir,我敢肯定你的建議也可行,我一定在我身邊做錯了事。謝謝你們倆。最後一個問題,我有一個HTML按鈕提交,它調用JavaScript函數「初始化」。有什麼辦法可以在頁面加載事件中調用這個按鈕點擊事件或JavaScript函數嗎?多謝你們! –

+0

這是一個完全不同的問題,所以,問一個新的=)並且,很高興我幫助:) – Rob

1

好的,runat =「server」是可以的。

您需要修改javascript。

如果你的控制輸入爲:

<input id="control_ID" runat="server" /> 

使用<%= control_ID.ClientId%>在JavaScript中引用控制

它將很好地工作。但是,如果這不起作用,請分享您的代碼。我會解決的!

0
<img alt="Calendar" onmouseover="javascript:this.style.cursor='hand';" 
        src="~/images/Calander_0.png" 
        id="ImgCalender" 
        onclick ="javascript:showCalendarControl('<%=txtAppointmentDate.ClientID %>','mm/dd/yyyy');" 
        runat="server" /> 

如果在服務器上運行設置的JavaScript不起作用