按钮onClick事件处理程序永远不会在Chrome中触发

时间:2012-01-20 17:40:56

标签: javascript asp.net google-chrome event-handling

我正在使用旧的ASP.NET WebForms应用程序,该应用程序具有带以下控件的.aspx页面:

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

Budget_Approve_Click事件处理程序永远不会被命中,我正在尝试确定原因。我注意到页面加载时,执行此代码以向onclick属性添加一些内联j:

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

呈现的HTML:

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

所以当我点击时,我希望confirm_approve()被执行。如果它返回true,我希望回发和我的事件处理程序触发。在Chrome中调试,我发现confirm_approve()确实返回true

javascript code

但是,回发永远不会发生,并且Budget_Approve_Click事件处理程序永远不会被命中。为什么不呢?

修改:我尝试删除完全添加内联JavaScript代码的行。但是,仍然没有回发。为按钮呈现以下HTML:

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

更新:发现IE中的回发可以正常运行,但仍然不是Chrome。是否存在可能导致此问题的特定于浏览器的设置或问题?

3 个答案:

答案 0 :(得分:3)

我会解决这个问题:

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

答案 1 :(得分:1)

试试这个......

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

答案 2 :(得分:-1)

检查您的按钮是否以某种方式被禁用。

$(“input [type ='submit']”)。attr(“disabled”,“disabled”);

如果发生类似情况,Chrome将会收到不完整的POST请求。 ASP.NET不会触发服务器端事件。