我想禁用网页上的某些控件,同时根据 DropDownList
的更改加载页面。控制
当用户更改 DropDownList 时,我有代码暂时禁用该控件。
myDDL.enabled =false;
我的 Page_Load()
上也有调用创建 LoadComplete
事件。
Page.LoadComplete += new EventHandler(Page_LoadComplete);
在 LoadComplete()
我只需重新启用 DropDownList
控制
myDDL.enabled=true;
但是,真正发生的是我的控件“非常快”地启用,并且用户仍然可以更改 dropdownlist,
的值即使页面仍在“加载”中。
“正在加载”是什么意思?
我有一个gridview
与 CKeditor
文本框超过几行,我可以看到 gridview
已加载,但CKeditor
控件在停止之前仍在呈现,因为它在内部执行了加载操作(javascript)。
有什么办法可以延迟 LoadComplete()
事件说 5 秒,让 CKeditor 中的 javascript 完成?
谢谢
最佳答案
如果您想要的只是 5 个部分的延迟,您可以这样做:
函数loadComplete() {
setTimeout(function(){ myDDL.enable = true;}, 5000);
}
这将导致 ddl 在调用 loadComplete 5 秒后启用。
所以我实际上做的是在服务器上:
private void load_page (){
myDD.enable = false;
}
然后在客户端,使用jquery:
<script>
$(document).ready(function() { $("#myDDL").prop('disabled', false); });
</script>
如果没有 jquery,您将使用 onload 事件处理程序作为表单的一部分。
此解决方案严格来说是客户端,但假定是一个 aspx 页面。 onload 事件处理程序已在标记中分配。
<html>
<head>
<script>
function init() {
document.getElementById("someDDL").disabled = false;
}
</script>
</head>
<body>
<form onload="init()">
<asp:DropDownList id="someDDL" clientIdMode="Static" runat="server" Enabled="false"></asp:DropDownList>
</form>
</body>
</html>
关于javascript - 即使在 Page.LoadComplete() 之后页面仍在加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40714627/