2012-01-20 23 views
5

tôi đang làm việc trên một ứng dụng ASP.NET WebForms cũ mà có một trang aspx với sự kiểm soát sau:Nút onClick Event Handler không bao giờ cháy trong Chrome Chỉ

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

Các xử lý sự kiện Budget_Approve_Click không bao giờ bị đánh, và tôi đang cố gắng xác định tại sao. Tôi nhận thấy khi tải trang, mã này được thực hiện thêm một số js inline đến onclick thuộc tính:

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

HTML đó được hiển thị:

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

Vì vậy, khi tôi bấm, tôi mong đợi confirm_approve() để được thực thi. Nếu nó trả về true, tôi mong đợi một postback và xử lý sự kiện của tôi để bắn. Gỡ lỗi trong Chrome, tôi thấy rằng confirm_approve() không thực sự trở true:

javascript code

Tuy nhiên, postback không bao giờ xảy ra, và xử lý Budget_Approve_Click sự kiện không bao giờ bị đánh. Tại sao không?

Chỉnh sửa: Tôi đã thử xóa dòng bổ sung hoàn toàn mã javascript nội tuyến. Tuy nhiên, vẫn không có postback. HTML sau được trả lại cho các nút:

<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;" /> 

Cập nhật: Phát hiện ra rằng postback không làm việc trong IE, nhưng vẫn không Chrome. Có bất kỳ cài đặt hoặc sự cố cụ thể nào của trình duyệt có khả năng gây ra sự cố này không?

Trả lời

3

Tôi chỉ có thể làm việc xung quanh nó với điều này:

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

thx cho đầu vào. đã thử nó, nhưng vẫn không có gì. tôi thậm chí đã cố gắng loại bỏ hoàn toàn dòng này, nhưng không thay đổi kết quả. dường như có thể có vấn đề lớn hơn .. –

+0

@mhornfeck - những gì html được tạo ra? Bạn có thể chỉnh sửa lại câu trả lời cho câu trả lời của mình –

+0

kết quả đã đăng lên câu hỏi gốc –

1

Hãy thử này ...

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

Nó chính xác giống như câu trả lời của @Adam Racki. – Lion

+1

Chúng phải được gõ đồng thời –

+0

Chúng tôi đã tắt một phút - anh ấy không sao chép tôi –

-1

Kiểm tra xem nút của bạn bị vô hiệu hóa bằng cách nào đó.

$ ("đầu vào [loại = 'gửi']"). Attr ("disabled", "disabled");

Nếu một cái gì đó như thế này xảy ra, Chrome sẽ có yêu cầu POST không hoàn chỉnh. ASP.NET sẽ không kích hoạt sự kiện phía máy chủ.