在Chrome浏览器中,按钮的onClick事件处理程序无法触发

5

我正在开发一个旧的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事件处理程序从未被触发,我正在尝试确定原因。我注意到当页面加载时,会执行以下代码将一些内联js添加到onclick属性中:

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,我期望进行一次postback并且调用我的事件处理程序。在Chrome中调试时,我发现确实返回了true

javascript code

然而,postback从没发生过,Budget_Approve_Click事件处理程序也从未被触发。为什么会这样呢? 编辑:我尝试完全删除添加内联JavaScript代码的那行,但仍没有postback。以下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个回答

3
我会用以下方法解决此问题:

我只需采用以下方法:

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

谢谢你的输入。我尝试了,但仍然没有任何结果。我甚至尝试完全删除这行代码,但结果没有改变。看起来可能存在更大的问题。 - Michael Hornfeck
@mhornfeck - 生成了什么HTML?你能把它编辑回答中吗? - Adam Rackis
回答原问题的发布结果 - Michael Hornfeck
@mhornfeck - 所以你现在完全不再操作按钮了,也没有postback?奇怪。你有检查控制台是否有错误吗? - Adam Rackis
控制台没有错误。但是,我尝试在IE(而不是Chrome)中运行页面,它确实会回传。现在,需要找到一个解释... - Michael Hornfeck

1

试试这个...

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

这与@Adam Racki的答案完全相同。 - Lion
1
他们一定是同时在打字。 - Luke Hutton
我们错了一分钟 - 他没有复制我。 - Adam Rackis
可能是这样。我并不冒犯@Naeem Sarfraz,只是有点好奇! - Lion

-1

检查一下你的按钮是否被禁用了。

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

如果出现这样的情况,Chrome 将会有一个不完整的 POST 请求。 ASP.NET 将无法触发服务器端事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接