blockUI应用到Asp.Net页面时服务器控件(Button等)失效的问题
問題:在Asp.Net頁面中用blockUI這個控件實現彈出窗口的效果,彈出頁面內容為頁面中某個Panel中的內容,包含TextBox、Button等服務器控件。使用時就簡單的設置message屬性。問題出來了,當顯示這個彈出頁面后,所有Button等服務器控件的Click等事件全部失效、即使通過js強制提交網頁,PostBack之后取不到TextBox中填入的值。
解決思路:
1.懷疑這個控件把彈出頁面中的事件冒泡取消了,以至Submit等事件沒有觸發:看了其js代碼后并未發現任何相關程序。
2.這個彈出頁面、遮罩層、Iframe的層級關系如何:其實也是無意中使用MS的IE Developer Tool Bar查看頁面的DOM樹,驚奇的發現,$.blockUI()之后message中的內容居然是直接append到body下面的,跟form同一層級,也就是說,本來Button(也就是submit)是屬于這個form的,現在被拿出來了,那當然失效!
3.研讀代碼之后,blockUI只有兩種:全屏遮罩和對特定elment進行遮罩,前者其實就是把message默認append到body下。和我要實現的效果有點出入,我希望仍然全屏遮罩,但若原先屬于form的仍然append到原form下,正好介于兩種遮罩方式之間。沒辦法啦,只能擴展代碼來實現。
解決辦法:
復述一下我的目的:既使用全屏遮罩,又要使得原form下的submit(Asp.Net服務器控件)仍然可用,為jQuery對象或選擇器表達式
1.添加target屬性,默認為'body'。看需要指定將message要加入哪個elment
2.將message這一層單獨處理,append到target,并把target記錄到blockUI.history中
3.unblock時根據blockUI.history的target定位到message層
?不好意思,當時忘了附上修改后的js文件了: 下載
調用:
????????????????????message:?$("#myDiv"),
????????????????????target:?"#form1"
????????????????});
轉載于:https://www.cnblogs.com/vason/archive/2009/02/23/1396420.html
總結
以上是生活随笔為你收集整理的blockUI应用到Asp.Net页面时服务器控件(Button等)失效的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qtimer不触发原因_迷你世界:触发器
- 下一篇: node 升级_Node.js 版本知多