2013-04-06 4 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")입니다.



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

: 컨텐츠 페이지 (영문)에서
  • ,

    • 나는
    • 내가 자바 스크립트 함수의 catchEsc (e)를 추가, 정적에 모달 팝업의 ClientIDMode 설정
      • 마지막으로 콘텐츠 페이지의 코드 뒤에 코드 벨을 추가했습니다. 를 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