我正在使用ASP.NET,我在webform上有一个保存按钮。当单击该保存按钮(ONCE)并且我正在使用IE8时,事件处理程序将执行两次。如果我使用兼容模式它工作得很好。在FF中一切正常。我在Vista和Windows 7上测试了IE8并获得了相同的行为。 IE7工作得很好。只是好奇,任何人都有类似的问题。
P.S。我正在使用一个高级布局系统,它根据布局定义对控件进行定位和设置样式,因此它不仅仅是页面设置的标准投影控件。
答案 0 :(得分:12)
我们使用onserverclick on button标签而不是使用asp.net按钮。解决方案是将按钮的类型设置为“按钮”。在没有设置类型之前,我认为提交是默认的。
更改
<button id="button1" runat="server" onserverclick="button1_OnClick" />
要
<button id="button1" runat="server" type="button" onserverclick="button1_OnClick" />
现在我没有在IE8中获得双重帖子。
答案 1 :(得分:0)
我刚刚修复了一个类似症状的错误,这个错误是由在按钮的客户端javascript事件处理程序中进行的两个form.submit()调用引起的。
看来第二个form.submit()被其他浏览器忽略但在IE8中执行。
答案 2 :(得分:0)
我正在使用jquery(formobj).trigger(submit)
这已更改为
jquery(formobj)[0].submit()
注意我直接在表单上调用submit而不是jquery方法 希望这有助于某人
答案 3 :(得分:0)
我刚刚找到了解决类似问题的解决方案。 由于之前的解决方案似乎都没有帮助我,我以为我会发布自己的解决方案。
问题:
在webform上使用asp按钮并使用OnClientClick运行自定义回发机制时。回发似乎发生了两次(第二次没有应用viewstate) 例如:
function ok(){
docustompostbackthing();
}
<asp:Button runat="server" ID="btnOk" Text="Ok" OnClientClick="ok();" cssClass="btn"/>
解决方案:
添加“return false;”在按钮的OnClientClick中调用js函数之后。 在函数本身中添加它并不起作用。
e.g。 :
function ok(){
docustompostbackthing();
}
<asp:Button runat="server" ID="btnOk" Text="Ok" OnClientClick="ok();return false;" cssClass="btn"/>
答案 4 :(得分:0)
请查看页面上呈现的html:
每次出现
<img src=""/>
对于某些浏览器,可能会发生双重回发......
如果这是麻烦,您可以解决此问题,为每个按钮设置默认的空白图像
<asp:ImageButton ImageUrl="~/Images/blank.gif"...
答案 5 :(得分:0)
只是添加解决方案的数量。
不仅 OnClientClick 存在问题, OnClick 事件在IE8中也会发生非常类似的事情。
<asp:Button runat="server" ID="btnOk" Text="Ok" OnClick="ok();" cssClass="btn"/>
可以更新为以下内容,以避免第二个事件被解雇。
<asp:Button runat="server" ID="btnOk" Text="Ok" OnClick="ok();return false;" cssClass="btn"/>
答案 6 :(得分:0)
我在IE 11中遇到了同样的问题并设法通过添加type =&#34; button&#34;来修复它。按钮控件。