我有一个asp.net按钮,它是runat服务器,有一个函数句柄,可以回滚按钮onclick。
如何在进入服务器程序之前在页面中显示"loading ..."
字?
答案 0 :(得分:23)
将OnClientClick连接到某个返回true或false的javascript函数。如果返回true则发生回发,否则它被取消。
<asp:Button id="MyButton" runat="Server" Text="Close"
OnClientClick="return PromptClose();"/>
<script type="text/javascript">
function PromptClose(){
return prompt("Do you really want to close this window?");
}
</script>
答案 1 :(得分:9)
您可以使用页面表单的onsubmit
事件。这是在提交表单之前发生的,如果您需要通过取消冒泡,将允许您停止提交表单。如果您需要此功能,此示例中的最后两行将取消浏览器中的冒泡。
<form runat="server" onsubmit="ShowLoading()">
</form>
<script type="text/javascript">
function ShowLoading(e) {
var div = document.createElement('div');
var img = document.createElement('img');
img.src = 'http://www.oppenheim.com.au/wp-content/uploads/2007/08/ajax-loader-1.gif';
div.innerHTML = "Loading...<br />";
div.style.cssText = 'position: fixed; top: 30%; left: 40%; z-index: 5000; width: 222px; text-align: center; background: #fff; border: 1px solid #000';
div.appendChild(img);
document.body.appendChild(div);
// These 2 lines cancel form submission, so only use if needed.
window.event.cancelBubble = true;
e.stopPropagation();
}
</script>
上面的JavaScript只是例如,但是(在我看来)这是你正在寻找的首选方式。它看起来像这样(在屏幕的中央):
这适用于任何引发PostBack的元素,因此您不必在页面上的每个按钮或表单元素上手动调用ShowLoading()
。我会将ShowLoading()
的内容替换为一些真正的加载功能,而不仅仅是我汇总的示例代码。
答案 2 :(得分:3)
查看OnClientClick,您可以添加对js函数或内联JS的调用。
或者你可以使用JQuery连接到按钮并显示带有异步回调的模态对话框。