2011-07-01 22 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%> ')。value; // AJAX呼び出し } – Shimaa

答えて

0

OPは上にユーザーコントロールからsaveEvent関数定義を置き換え

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

を次のようにそれを取り除くためにand when I view source I found the javascript function is repeated for every item in the repeater

ウルJavaScriptを置く私は

+0

私は正しい方向に指摘してきたことを確認するために、私は頭せずにページの一番上に置くと、それが働いた、どうもありがとう:) – Shimaa

+0

@Shimaaはいい... –

0

ウルの問題だと思うと述べましたコントロールが使用されるページ。私が理解している限り、そのページのこの関数のテキストボックスIDを使用しています。 実際には、ユーザーコントロールのマークアップにjavascriptブロックを配置すると、残りのコントロールのマークアップとともにレンダリングされます。これを避けるには、サーバーコードからjavascriptを登録し、そのコードブロックが既に登録されているかどうかを確認してください。 ちなみに、最後の関数定義だけが、新しいコントロールインスタンスがレンダリングされるたびに前の関数定義を再定義しているので、注目されています。

+0

を作りますこの関数はまだ呼び出されていません。ボタンはサーバーコントロールではないため、ポストバックではありません。 – Shimaa

+0

ページのマークアップを表示できますか?ところで、ユーザーコントロールの完全なマークアップを表示していますか? –

1

問題1:ビューソースで、私はjavascript関数がリピータのすべての項目に対して繰り返されていることがわかりました。

解決方法: js関数を、ユーザーコントロールが呼び出されているページに配置します。また、ユーザーコントロールではなくページにjsファイル参照を配置する必要があります。

問題2:コントロールの値を<%= txtEventDescription.ClientID%>として取得しようとしています。 私は、このコントロールはユーザーコントロールで行われていると思います。

解決方法:ページのソースコードを確認し、コントロールの実際のクライアントIDが正しいことを確認してください。

js関数を呼び出す際にまだ問題がある場合は、firefoxのエラーコンソールを確認してください。

このヘルプが必要です。

関連する問題