2010-02-14 1 views
0

나는 thickbox를 사용하여 HTML을로드합니다. 이 html에는 데이터베이스에 물건을 추가해야하는 양식이 있습니다. 나는 메인 html (하나는 내가 thickbox에서로드)에 선택 상자가 있습니다. 내가 원하는 것은 thickbox에서 닫기 버튼을 누르면 선택 상자가 방금 데이터베이스에 추가 한 항목으로 업데이트되어야한다는 것입니다. thickbox close 메서드를 수정하고 선택 상자를 업데이트하는 내 메서드를 호출 할 생각 이었지만 thickbox는 충돌 할 때 충돌이 발생합니다. 어떤 힌트도 크게 감사 할 것입니다.thickbox 닫을 때 부모 HTML에서 메서드를 호출하는 데 도움이

+2

두꺼운 상자가 꽤 오래되어 더 이상 유지 관리되지 않습니다. 선택에 따라 사용하고 있습니까? 아니면 이전 응용 프로그램에서 사용하도록 강요 받았습니까? 어쨌든, 양식 제출이 반환 될 때 "선택"목록을 업데이트하고 싶지 않으십니까? 어쨌든 양식을 어떻게 제출합니까? – Pointy

+0

선택에 의해 사용하고 있습니다. 다른 대안을 알고 있다면 나는 제안에 개방되어있다. – user253530

+0

thickbox 홈 페이지에는 대안이 나열되어 있습니다. http://jquery.com/demo/thickbox/ – Pointy

답변

0

Firebug를 사용하여 thickbox를 검사하면 thickbox 모달이 실제로 기본 페이지의 div임을 알 수 있습니다. thickbox에서 기본 페이지의 모든 기능을 호출 할 수 있습니다.

예를 들어,이 코드는 '납치'는 Thickbox와 가까운 링크 및 추가 거즈를 수행합니다

$("#TB_closeWindowButton").click(function(){ 
    tb_remove(); 
    //do extra stuffs, such as get a new select 
    var select_parent = $('#theselect').parent(); 
    $.get('new_select.php', 
     {}, 
     function(data){ 
      select_parent.html(data); 
     }); 
}); 

는 옆에있는 Thickbox와 가까운 링크를 납치, 당신은 또한 Thickbox와 내부에 링크에 코드를 넣을 수 있습니다. 사용자 정의 코드 전후에 thickbox 창을 닫으려면 tb_remove()으로 전화하십시오. 양식 제출과 관련된 경우 jQuery form plugins을 사용하여 AJAX를 통해 양식을 제출 한 다음 성공적인 양식 제출시 닫기 기능을 실행하십시오.

선택 상자 업데이트에 대해서는 모든 브라우저에서 실행되도록하는 방법에 대한 내 대답 here을 참조하십시오.

함수가 항상 호출되도록하려면 modal 모드를 사용하도록 thickbox를 설정하면 이스케이프 키가 비활성화됩니다. 기본적으로 두꺼운 상자 표시 줄은 표시되지 않으므로 닫기 코드를 넣는 것을 잊지 마십시오.

8

전체 tb_remove 함수를 도용 할 수도 있습니다. 이것은 링크 클릭뿐만 아니라 ESC 키 누르기도 캡처한다는 것을 의미합니다.

이것은 원래의 제거 메소드를 인라인으로 바꾸고 사용자 고유의 제거 메소드로 대체하는 것을 의미합니다.

<script type="text/javascript"> 
     var original_tb_remove = tb_remove; 
     tb_remove = function() { 
        **** insert your coolness here **** 
        original_tb_remove(); 
        return false; } 
    </script> 

참고 : 최대 성공을 위해 thickbox가 처음 호출되기 전에이 작업을 수행해야합니다.

+0

감사합니다, 당신은 내 하루를 구했습니다. 나쁜 사용자는 귀하의 답변을 수락하지 않았다 ... – Mathlight

+0

@mathlight 기꺼이 내가 오랫동안 누군가도 도왔 :) – LucasS