我想按下转义键隐藏模态弹出框。我找到了一种适用于包含body标签(不是内容页面)的页面的方法;使用下面的函数,以及body标签的onkeypress事件。
function catchEsc(e) {
var kC = (window.event) ? // MSIE or Firefox?
event.keyCode : e.keyCode;
var Esc = (window.event) ?
27 : e.DOM_VK_ESCAPE // MSIE : Firefox
if (kC == Esc) {
var mpu = $find('ModalPopupExtender1');
mpu.hide();
}
}
问题是我正在使用内容页面而且我不知道没有body标签,我该怎么做呢。 任何想法?
答案 0 :(得分:0)
此代码也适用于内容占位符 并且无需在代码后面添加处理程序
function pageLoad(sender, args) {
if (!args.get_isPartialLoad()) {
// add our handler to the document's
// keydown event
$addHandler(document, "keydown", onKeyDown);
}
}
function onKeyDown(e) {
if (e && e.keyCode == Sys.UI.Key.esc) {
$find('popPAlert').hide();
$find('ModalPopupThemeView').hide();
$find('AlPopUp').hide();
$find('Mod_Error').hide();
$find('Mod_preview').hide();
}
}
</script>
答案 1 :(得分:0)
我自己解决了这个问题如下:
在母版页中,我将body标签设为服务器控件(id =“myBody”runat =“server”)。
在内容页面(aspx)中,
function catchEsc(e) {
var kC = (window.event) ? // MSIE or Firefox?
event.keyCode : e.keyCode;
var Esc = (window.event) ?
27 : e.DOM_VK_ESCAPE // MSIE : Firefox
if (kC == Esc) {
var mpu = $find('ModalPopupExtender1');
mpu.hide();
}
}
HtmlGenericControl body =
(HtmlGenericControl)this.Page.Master.FindControl("myBody");
body.Attributes.Add("onkeypress", "catchEsc(event)");
它有效!