2016-03-21 17 views
0

javascript'ten "AcceptSuggestion" çağırmaya çalışıyorum. "AcceptBtn" üzerinde bir tıklamayı simüle ediyorum ve sonra bir tablo satırını yenilemek istiyorum. Çalışıyor ... ama "AcceptSuggestion" işlevi üç kez çağrılıyor. Herkes nedenini biliyor mu? İlerlemeden önce "acceptBtn" i tıklamaya çalıştım ama şansım yok. fonksiyon çağrıldığını buradajQuery - işlev üç kez çağrılıyor

<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> 

Ve:

Protected Sub AcceptSuggestion() 

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

update(param) 

End Sub 

Eh, ben sorun güncelleme paneli ne tetik değil sanırım İşte

güncelleme paneldir.

Düğmeyi çağırmak için javascript işlevim işte bu işe başlamak için bulamadım ve zaten her şeyi denediğimi hissediyorum.

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(); 

      } 

cevap

0

Evet, bu çünkü Web Forms nasıl çalıştığını olduğunu :) Bu farklı bir olaylar yangınları varsayalım, tüm sayfa yaşam döngüsünü Here görebilirsiniz. Probleminizin çözümünün sayfanızda Load yöntemini veya Init yönteminizde kullandığını ve bu kodu bu yöntemin en üstünde kullandığını düşünüyorum.

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

Cevabınız için teşekkürler, ancak sayfanın PostBack olup olmadığını kontrol ediyorum. Page_Load doğrulama amaçlandığı gibi çalışıyor, ancak AcceptSuggestion işlevi hala 3 kez çağrılıyor. –

+0

Üzgünüz, Kontrol cihazınızı göndermediniz ve PostBack'i kontrol edip edemediğinize karar veremiyorum. Bu durumda, ben olsaydım, sayfa yaşam döngüsü set kesme noktalarındaki tüm yöntemleri uygulardım, ayrıca işlevinizi çağıran olayı da kontrol ederim. Fonksiyonunuzun console.log (arguments.callee) tarafından çağrıldığı yerden kontrol edilebilir ve buna çağrılan şeyi görebilirsiniz. –

+0

Bunun için üzgünüm. İkinci cümlenizi tam olarak anlamadım "Bu durumda, siz olsaydım, sayfa yaşam döngüsü set kesme noktalarındaki tüm yöntemleri uygulardım". "console.log (arguments.callee)" şey, sanırım javascript işlevinin kaç kez çağrıldığını görmeye çalışıyorsunuz, eğer öyleyse, sadece bir kez çağrılıyor. Üzgünüm ama javascript için yeniyim :( –