2013-04-06 51 views
0

我想通過按下退出鍵來隱藏模式彈出框。我發現了一種可以在包含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(); 
      } 
     } 

問題是我使用的內容頁面,我不知道沒有身體標記,我該怎麼做。 有什麼想法?

回答

0

我解決了自己的問題如下工作:

  • 在母版頁中,我做了body標記一個服務器控件(id =「myBody」runat =「server」)。

  • 在內容頁(CSS),

    • 我設置模式彈出的的ClientIDMode爲靜態,
    • 我添加JavaScript函數catchEsc(E):


    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(); 
      } 
     } 

  • 終於在內容頁面的代碼後面,我加了code bel低到Page_Load中:


    HtmlGenericControl body = 
       (HtmlGenericControl)this.Page.Master.FindControl("myBody"); 
    body.Attributes.Add("onkeypress", "catchEsc(event)"); 

和它的工作!

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> 
+0

是的,這也是事實。有效。 – parisa 2013-04-10 07:30:36