2012-01-20 15 views
5

pracuję na starej aplikacji ASP.NET WebForms, który ma stronę .aspx o następującej kontroli:Przycisk Event Handler Nigdy onClick Fires w Chrome Tylko

<asp:Button ID="Budget_Approve" OnClick="Budget_Approve_Click" runat="server" 
Visible="True" Width="100" Height="30" Text="Approve"></asp:Button> 

Budget_Approve_Click obsługi zdarzenia nigdy nie jest uderzeniem, i próbuję ustalić, dlaczego. Zauważyłem po załadowaniu strony, kod ten zostanie wykonany, aby dodać kilka js inline do atrybutu onclick:

Budget_Approve.Attributes.Add("onclick", "return confirm_approve();"); 

HTML, który pobiera renderowane:

<input type="submit" name="ctl00$mainContent$Budget_Approve" value="Approve" 
onclick="return confirm_approve();WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$mainContent$Budget_Approve&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" 
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;"> 

Więc kiedy klikam, spodziewam confirm_approve() do być straconym. Jeśli zwróci true, oczekuję odświeżenia strony i uruchomienia programu obsługi zdarzeń. Debugowanie w Chrome, uważam, że confirm_approve() rzeczywiście powrócić true:

javascript code

Jednak nigdy postback dzieje i obsługi Budget_Approve_Click wydarzenie nigdy nie zostanie trafiony. Dlaczego nie?

Edytuj: Próbowałem usunąć linię, która całkowicie dodaje wbudowany kod javascript. Jednak wciąż nie ma odświeżenia. Poniższy HTML jest renderowane na przycisk:

<input type="submit" name="ctl00$mainContent$Budget_Approve" 
value="Approve" 
onclick="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$mainContent$Budget_Approve&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" 
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;" /> 

Update: odkrył, że odświeżenie strony działa w IE, ale nadal nie Chrome. Czy są jakieś ustawienia lub problemy specyficzne dla przeglądarki, które mogą potencjalnie powodować ten problem?

Odpowiedz

3

ja po prostu obejść z tym:

Budget_Approve.Attributes.Add("onclick", "if (!confirm_approve()) return false;"); 
+0

thx dla danych wejściowych. próbowałem, ale wciąż nic. Próbowałem nawet całkowicie usunąć tę linię, ale bez zmiany wyników. Wydaje się, że może być większy problem .. –

+0

@mhornfeck - dobrze, jaki html został wygenerowany? Czy możesz edytować go z powrotem na odpowiedź na –

+0

opublikowanych wyników na oryginalne pytanie –

1

Spróbuj tego ...

Budget_Approve.Attributes.Add("onclick", "if (!confirm_approve()) return false;"); 
+0

To dokładnie to samo, co odpowiedź @Adama Rackiego. – Lion

+1

Musieli pisać w tym samym czasie –

+0

Byliśmy wyłączeni przez minutę - nie skopiował mnie –

-1

sprawdzić, czy przycisk jest wyłączony jakoś.

$ ("input [type = 'submit']"). Attr ("disabled", "disabled");

Jeśli coś takiego się stanie, Chrome będzie mieć niepełne żądanie POST. Program ASP.NET nie będzie uruchamiał zdarzeń po stronie serwera.

Powiązane problemy