2011-07-01 40 views
1

我正在開發asp.net的Web應用程序,我有一箇中繼器,調用註冊用戶控件,我在用戶控件中的一個按鈕,我想調用一個JavaScript使Ajax調用在服務器上執行某些操作的函數。這個按鈕不會調用javascript方法,我不知道爲什麼?當我查看源代碼時,我發現中繼器中的每個項目都會重複使用javascript函數,如何消除此重複,特別是我讀取函數內的服務器項以及爲什麼函數未被調用?ASP.net用戶控件不調用JavaScript函數

非常感謝!

sercontrol.ascx 

<div id="divBtnEvent" runat="server"> 
    <input type="button" id="btnAddEvent" class="ok-green" onclick="saveEvent();" /> 
</div> 

<script type="text/javascript"> 
    function saveEvent() 
    { 
      var eventText = document.getElementById('<%=txtEventDescription.ClientID%>').value; 
      // make ajax call 
    } 
+2

發表了一些代碼。這將有助於糾正這個問題.. – niksvp

+0

「我有一個呼叫註冊用戶控制的中繼器」是指? –

+0

下面是一些代碼澄清: usercontrol.ascx

<腳本類型= 「文本/ JavaScript的」> 功能saveEvent(){ VAR eventText =的document.getElementById('<(%)= 。txtEventDescription.ClientID%>')值; //使AJAX調用 } – Shimaa

回答

0

OP說and when I view source I found the javascript function is repeated for every item in the repeater

擺脫它把UR的JavaScript如下

<head runat="server"> 
//heres goes ur js 
</head> 

我想這是烏拉圭回合的問題

+0

我把它放在無頭頁面的頂部,它的工作,非常感謝:) – Shimaa

+0

@Shimaa高興地看到,我已經指出了正確的方向... –

0

由用戶控制的saveEvent函數定義更換到使用控件的頁面。據我所知,您可以在該頁面使用此功能的文本框ID。 實際上,如果您在用戶控件的標記中放置了JavaScript塊,它將與其他控件的標記一起呈現。爲了避免這種情況,您可以從服務器代碼註冊javascript,並檢查代碼塊是否已經註冊。順便說一下,因爲它是 - 只有最後一個函數定義被引起注意,因爲它在每次新控件實例呈現時重新定義了前一個函數定義。

+0

該函數仍然未被調用,請注意,該頁面不回發,因爲該按鈕不是服務器控件。 – Shimaa

+0

你能顯示頁面的標記嗎?順便說一下,你是否顯示用戶控件的完整標記? –

1

問題1:在視圖源中,我發現中繼器中的每個項目都重複使用javascript函數。

解決方案: 把你的js函數放在用戶控件被調用的頁面上。您還必須將您的js文件引用放置在您的頁面上,而不是在用戶控制之上。

問題2:您試圖將控件的值設爲<%= txtEventDescription.ClientID%>。 我認爲,這種控制是在用戶控制之上的。

解決方案:請檢查您的頁面源代碼,看看該控件的實際clientid是。

如果在調用js函數時仍然有問題,請檢查firefox的錯誤控制檯。

希望得到這個幫助。

相關問題