Mic*_*eck 5 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>
Run Code Online (Sandbox Code Playgroud)
该Budget_Approve_Click事件处理程序从未被击中,我试图以确定原因.我注意到页面加载时,执行此代码以向onclick属性添加一些内联j :
Budget_Approve.Attributes.Add("onclick", "return confirm_approve();");
Run Code Online (Sandbox Code Playgroud)
呈现的HTML:
<input type="submit" name="ctl00$mainContent$Budget_Approve" value="Approve"
onclick="return confirm_approve();WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions("ctl00$mainContent$Budget_Approve", 
"", true, "", "", false, false))"
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;">
Run Code Online (Sandbox Code Playgroud)
所以当我点击时,我希望confirm_approve()被执行.如果它返回true,我希望回发和我的事件处理程序触发.在Chrome中进行调试,我发现confirm_approve()确实会返回true:

但是,回发永远不会发生,Budget_Approve_Click事件处理程序永远不会被击中.为什么不?
编辑:我尝试删除完全添加内联JavaScript代码的行.但是,仍然没有回发.为按钮呈现以下HTML:
<input type="submit" name="ctl00$mainContent$Budget_Approve" 
value="Approve"
onclick="javascript:WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions("ctl00$mainContent$Budget_Approve",
"", true, "", "", false, false))"
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;" />
Run Code Online (Sandbox Code Playgroud)
更新:发现这回发不工作的IE浏览器,但仍然没有Chrome浏览器.是否存在可能导致此问题的特定于浏览器的设置或问题?
我会用这个来解决它:
Budget_Approve.Attributes.Add("onclick", "if (!confirm_approve()) return false;");
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2489 次  |  
        
|   最近记录:  |