2016-03-21 26 views
0

javascriptから「AcceptSuggestion」を呼び出そうとしています。私は "acceptBtn"のクリックをシミュレートし、テーブルの行を更新したい。それは働いています...しかし、 "AcceptSuggestion"関数は3回呼び出されています。なぜ誰も知っていますか?私はaleadyは "acceptBtn"をクリックする前にバインドを解除しようとしたが、私は運がない。ここでjQuery関数が3回呼び出されています

が更新パネルです:

<asp:UpdatePanel ID="12" UpdateMode="Conditional" runat="server"> 
<ContentTemplate> 

<div id="123"> 
<asp:Literal ID="litTable" runat="server"></asp:Literal> 
</div> 
<button id='acceptBtn' onserverclick="AcceptSuggestion" runat="server" style="display: none" /> 
<button id='acceptAllBtn' onserverclick="AcceptAllSuggestions" runat="server" style="display: none" /> 
<asp:HiddenField ID="1" runat="server" Value="" /> 
<asp:HiddenField ID="2" runat="server" Value="" /> 
<asp:HiddenField ID="3" runat="server" Value="" /> 
<asp:HiddenField ID="4" runat="server" Value="" /> 
</ContentTemplate> 
<Triggers> 
<asp:AsyncPostBackTrigger ControlID="acceptBtn" EventName="ServerClick" /> 
<asp:AsyncPostBackTrigger ControlID="acceptAllBtn" EventName="ServerClick" /> 
</Triggers> 
</asp:UpdatePanel> 

そして、ここでは、呼び出される関数です。

Protected Sub AcceptSuggestion() 

Dim params As String 
params = 1.Value 
Dim param() As String = Split(params, "|", , CompareMethod.Text) 

update(param) 

End Sub 

さて、私はこの問題は、更新パネルでもないトリガーではないと思います。

ここにボタンを呼び出すJavaScript関数がありますが、これを動作させるための方法が見つからず、すべてを試したような気がします。

function acceptButton(i) { 
       var params = ""; 
       params += document.getElementById("var1" + i).textContent; 
       params += "|"; 
       params += document.getElementById("var2" + i).textContent; 
       params += "|"; 
       params += document.getElementById("var3" + i).textContent; 
       params += "|"; 
       params += document.getElementById("var4" + i).textContent; 
       params += "|"; 
       params += document.getElementById("var5" + i).textContent; 


       var bp = document.getElementById('<%=1.ClientID%>'); 
       bp.value = params; 

       var ri = document.getElementById('<%=2.ClientID%>'); 
       ri.value = i; 

       var Status = document.getElementById('<%=3.ClientID%>'); 
       Status.value = 1; 

       $('#<%=acceptBtn.ClientID%>').off().click(); 

      } 

答えて

0

はい、私はこれが原因でWebフォームは、それが別のイベントを発生、あなたはページ全体のライフサイクルHereを見ることができます:)どのように動作するかであることを前提としています。あなたの問題の解決方法は、ページのLoadメソッドまたはInitメソッドで使用し、メソッドの最上部でこのコードを使用していると思います。

if(this.IsPostBack) 
{ 
    return; 
} 
+0

答えていただきありがとうございます。私はすでにページがポストバックであるかどうかを確認しています。 Page_Load検証は意図したとおりに機能していますが、AcceptSuggestion関数はまだ3回呼び出されています。 –

+0

申し訳ありません、あなたのコントローラを投稿していない、あなたはポストバックをチェックするかどうかはできません。その場合は、私はあなたのページライフサイクル設定のブレークポイントにすべてのメソッドを実装し、あなたの関数を呼び出すイベントもチェックします。あなたは、あなたの関数がconsole.log(arguments.callee)によって呼び出された場所からチェックし、それを呼び出すことができます。 –

+0

申し訳ありません。 私はあなたの2番目の文を理解していませんでした。 "その場合、私はページライフサイクルのすべてのメソッドをブレークポイントに設定します。" "console.log(arguments.callee)"ということは、javascript関数が呼び出されている回数を確認しようとしていると思います。 申し訳ありませんが、javascriptの新機能です:( –

関連する問題