2011-08-18 4 views
2

행을 클릭하면 사용자가 해당 레코드를 편집 할 수 있도록 jQueryUI 모달 대화 상자를 시작하는 테이블이 있습니다. 나는 성공적으로 AJAX 사용하여 관련 레코드의 세부 사항을로드 작동하는 것 같다 다음 스크립트 사용 : 그것은 내가 기록을 클릭 처음으로 작품을 좋아jQueryUI 모달 대화 상자 내의 스크립트는 한 번만 작동합니다.

$("#datatbl tr").bind('click', function() {   
     var url = 'item_edit.asp?id='+$(this).attr("data-myid"); 
     var dialog = $('<div style="display:hidden" title="Record details:"></div>').appendTo('body'); 
     // load remote content 
     dialog.load(
      url, 
      {}, 
      function (responseText, textStatus, XMLHttpRequest) { 
       dialog.dialog({   
        height: 440, 
        width: 550, 
        autoOpen: false, 
        modal: true, 
        buttons: { 
         "Update this record": function() { 
         $('#editform').submit(); 
          }, 
         Cancel: function() { 
         $(this).dialog("close"); 
         } 
        } 
     }); 
     dialog.dialog('open'); 
      } 
     ); 
     //prevent the browser to follow the link 
     return false; 
}); 

,하지만 내가 클릭하면 취소하고 다른 레코드를 편집하려고 , 다이얼로그 박스가 나타나지만 정확한 기록 세부 사항이 표시됩니다. 대화 상자 내에서 스크립트가 작동하지 않습니다. 예 : jqueryUI datepicker 입력과 유효성 검사가 있습니다.

자바 스크립트 오류가 없으며 FireBug에 대한 제한된 이해로 인해 잘못된 정보를 찾을 수 없으므로 계속 진행하는 방법에 대해 조언 해 주시면 감사하겠습니다.

편집 : Argh! 때로는 명백한 점을 알아 내기 위해 여기에 타이핑하는 것과 같은 것이 필요합니다. 방금 상자가 닫힐 때 대화 상자에 대해 만들어진 DIV가 파괴되지 않는다는 것을 알게되었습니다. 이렇게하기 위해 라인을 추가했는데 이제 작동합니다. 듣기 주셔서 감사합니다. :) 나중에 참조

, 나는 'VAR 대화'에서 만든 DIV에 ID를 추가하고, 취소 기능에서 제거 : 사람이 더 나은 제안하는 경우

Cancel: function() { 
         $(this).dialog("close"); 
         $('#dialogbox').remove(); 
         } 

난 여전히 감사하겠습니다 이 동작을 처리하는 방법.

+0

당신이 대답에 편집을 추가하고 대답을 받아 들여야합니다. – Chamilyan

+0

시도했지만 8 시간을 기다려야합니다. 나는 그 때 그것을 할 것이다. 그러나 그 동안 나는 원래의 게시물을 고칠 것이다, 고마워. – Stevemid

답변

1

해결 : 상자를 닫으면 대화 상자 용으로 생성 된 DIV가 파괴되지 않습니다.

나는 'VAR 대화'에서 만든 DIV에 ID를 추가하고, 취소 기능에서 DIV 제거 :

Cancel: function() { 
         $(this).dialog("close"); 
         $('#dialogbox').remove(); 
         } 
0

한 번에 대화 상자를 만들 수 있지만 콘텐츠를로드 할 때마다 만들지는 말고 autoOpen을 false로 설정하면됩니다.

<div id="dialog"> 
    <div id="content" style="display:hidden" title="Record details:"></div> 
</div> 

$('#dialog').dialog({ 
    height: 440, 
    width: 550, 
    autoOpen: false, 
    modal: true, 
    buttons: { 
     "Update this record": function() { 
      $('#editform').submit(); 
     }, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 
$("#datatbl tr").bind('click', function() {   
    var url = 'item_edit.asp?id='+$(this).attr("data-myid"); 
    // load remote content 
    $('#content').load(url); 
    $('#dialog').dialog('open'); 
    return false; 
}}; 
+0

autoOpen 이 false로 설정됩니다. 대화 상자를 여는 것은 문제가 아니 었습니다. 상자가 열리거나 닫히면 다시 열리는 것이 사실이었습니다. (위 참조). 답변 감사합니다 – Stevemid