我这里有一个特殊的问题,我的生活无法弄清楚解决方案是什么。请注意,以下代码是 not 动态创建的,但只是在我的aspx
文件中。
<button type="button" runat="server" id="btnSubmit"
OnServerClick="btnSubmit_Click" onclick="return confirm('Sure?');">
Submit
</button>
只要我不那里有onclick
属性,即OnServerClick
处理程序被激活,它就可以正常工作。但是当我使用onclick
属性时,无论是否确认或拒绝确认对话框都不是。
我做错了什么?感谢
答案 0 :(得分:15)
如果查看生成的源代码,您将看到以下内容:
onclick="return confirm('Sure?'); __doPostBack('btnSubmit','')"
所以发生的事情是永远不会调用_doPostBack。做你正在寻找的东西的hacky方法如下:
<button type="button" runat="server" id="btnSubmit"
OnServerClick="btnSubmit_Click" onclick="if (confirm('Sure?')) ">
真正正确的方法是使用Web Control:
<asp:Button runat="server"
OnClick="btnSubmit_Click" OnClientClick="return confirm('Sure?')" Text="Submit" />
答案 1 :(得分:3)
我在
方面取得了更大的成功<asp:Button ID="btnSubmit" runat="server" Text="Save" UseSubmitBehaviour="false"
OnClick="btnSubmit_Click" OnClientClick="if (!confirm('Sure?')) return" />
答案 2 :(得分:2)
接受的答案并不完美。如果您不使用type="button"
,即使您已点击取消,网页也会进行回发。最正确和最简单的方法是利用short-circuit evaluation并执行此操作:将;
替换为&& !
,如下所示。
<button runat="server" id="btnSubmit"
OnServerClick="btnSubmit_Click" onclick="return confirm('Sure?') && !">
输出将如下所示:
<button id="btnSubmit"
onclick="return confirm('Sure?') && ! __doPostBack('btnSubmit','')">
它提供了正确的返回值,因为true && !undefined
将返回true
并且undefined
将被评估,false && !undefined
将返回false
,undefined
将不评估哪个是我们想要的。
答案 3 :(得分:1)
听起来像onclick事件没有冒泡。
你应该能够使用
OnClientClick="return confirm('Sure?');
我不认为其他onClick应该是必要的。
编辑:
此方法需要您手动将函数挂钩到OnClick事件。
我今天早上正在弥补属性,所以徒劳地努力赎回自己 -
另一种方法是插入javascript来捕获事件。像...这样的东西。
$("form").submit(function() {
var resp = confirm("Save & Submit?");
if (resp) {
serializeStats();
return true;
}
else {
return false;
}
});
我确实记得有更好的内联方式来做到这一点。 咖啡因时间现在。
答案 4 :(得分:1)
如何更改要提交的按钮类型,它运作良好:
<button type="submit" runat="server" id="btnSubmit"
OnServerClick="btnSubmit_Click" onclick="return confirm('Sure?');">
Submit
</button>
答案 5 :(得分:1)
试试这个:
<button type="button" runat="server" id="btnSubmit"
OnServerClick="btnSubmit_Click" onclick="if(!confirm('Sure?')) return;">
Submit
</button>
答案 6 :(得分:0)
&LT;按钮&GT;是一个HtmlButton控件,其中OnServerClick是唯一的服务器端单击事件。 ASP.NET无法识别OnClick,因此如果您希望在回发之前执行某些客户端javascript代码,它将完整地传递给客户端。
&LT; ASP:按钮&GT;是一个WebControl,它使用OnClick服务器端事件和OnClientClick实现客户端相同的功能。
我认为你得到了你看到的行为,因为你的确认('确定?')返回false,这会停止回发机制。这可以解释为什么当你没有onclick就可以了。
答案 7 :(得分:0)
前台
following
后台
//h1/following::h2/following::h3/following::h4/following::h5/following::h6