用户控件内的输入按钮不会触发onclick事件

时间:2014-07-06 21:00:20

标签: c# javascript .net-4.0

我已经更新了我的.Net Web应用程序以使用Framework 4.5,更新后,所有输入按钮(不是asp:Buttons)都停止触发onclick javascript代码,这只发生在里面的那些按钮上用户控件(.ascx)。

仅为了记录,用户控件既不会被动态加载,也不会被更新面板加载。

我的按钮看起来像这样

<input id="cb" onClick="myfunc()" type="button" value="Close" />

我的用户控件包含在页面中,如下所示

<cc:actionbar id="theActionBar" runat="server"></cc:actionbar>

和javascript函数(也包含在用户控件中)是

function myfunc() {

    if (confirm("Before closing, please make sure you saved any changes.\nAre you sure you want to close?") == true) {
        __doPostBack('theActionBar:theClose', '');
    }


}

这在Framework 3.5和以前的版本上运行得很好。

任何想法为什么会发生这种情况?或者我该如何解决?我已经尝试了一些我在互联网上找到的建议,似乎没什么用。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我无法看到一个明显的原因,但您是否考虑过简化您的方法以避免自定义javascript和硬编码的回发事件参考?您可以使用ASP.NET按钮的OnClientClick属性获得完全相同的行为:

    <asp:Button runat="server" ID="btnClose" Text="Close" OnClick="btnClose_Click" OnClientClick="return confirm('Before closing, please make sure you saved any changes.\nAre you sure you want to close?')" />

从OnClientClick代码或函数返回false会阻止回发。

切换到这种方法可能更合适,甚至可以解决您的问题,如果它与回发事件参考有关。