2011-03-10 3 views
-1

jQuery 오버레이에 사용자 정의 닫기 버튼을 제공하고 있습니다.
이 버튼을 클릭하면 오버레이 내에 양식을 확인하고 양식이 유효한 경우에만 을 닫습니다.jQuery 오버레이를 조건부로 닫는 방법은 무엇입니까?

$('.trigger[rel]').overlay(
{ 
    close: '.ovclosebutton', 
    onClose: function() 
    { 
     if(validateSomething()) 
      this.getOverlay().close(); 
     else 
      displayErrorInOverlayButDontCloseIt(); 
    } 
}); 

가 어떻게이 acheive 수 있습니다 (항상 가까운 상관없이 ... 작동하지 않습니다)?

답변

5

여기에서 찾을 수 있습니다 당신이 jQuery tools overlay를 사용하고 나타납니다. 오버레이가 확인

을하지 닫을 때 오버레이가
onClose을 닫기 전에이 플러그인으로 작동하는지 이벤트 방법을 보면 당신은 아마 onClose

onBeforeClose 대신 onBeforeClose로 묶을 필요 일부 의사 코드의 시작일 수도 있습니다. event refrence 보면

$('.trigger[rel]').overlay(
{ 
    close: '.ovclosebutton', 
    onBeforeClose: function() 
    { 
     if(validateSomething()) 
      return true; //let the overlay close by default. 
     else{ 
      displayErrorInOverlayButDontCloseIt(); 
      return false; //block the close 
     } 
    } 
}); 

당신이 어떤 조치가 취해지기 전에 발생 하여 onBefore 이벤트를 모두 제공 이 도구 전에 및 이벤트 후 onBeforeClose

를 사용하여 주변을 취소 할 수 있어야한다 (또는 후에) 발생하는 이벤트가 발생하면 조치가 취해집니다. 사용자 지정 기능을 이러한 이벤트에 바인딩 할 수 있습니다. 모든 도구는 이벤트를 제공하며 공통 이름 지정 정책을 공유합니다. onBefore 이벤트는 의 조치를 취할 가능성을 알려주며 을 제공합니다.

+0

True! 'onClose' 이벤트는 닫힌 직후에 트리거됩니다. 대신에'onBeforeClose'를 사용하십시오. – Akarun

+0

감사합니다. 내 실수는 onBeforeClose 함수에서 아무 것도 반환하지 않는다는 것이 었습니다. Mark & ​​Akarun이 제안한대로 수정했을 때 완벽하게 작동했습니다. –

관련 문제