2011-09-20 3 views
1

jQuery 대화 상자에서 양식을 여는 하이퍼 링크가 M1.Than으로 표시됩니다. 모든 정보를 입력하고 "만들기"를 클릭하십시오 "사용자를 생성합니다. 새 사용자를 만드는 동안 "기다려주십시오 .. 메시지가 있습니다."라는 메시지가 나타납니다.Jquery 모달 대화 상자를 다시 열 수 없습니다.

이제 내 문제는 iam이 ("M2") 모달을 표시 할 수 없습니다. "Please 기다리는 동안 .. 새 메시지를 기다리는 동안 "("M1 ") 계속 머물 때마다 새 사용자를 생성합니다. 처음으로오고 ("M1") 다음 번에 다시 표시하지 않습니다. iam을 닫으면 대화 상자가 손상되고 제거됩니다. (다른 호에 기인합니다)

여기 코드입니다. 새 데이터를 검색하기 위해 Ajax를 사용하여 다시 경우

<div id="m2" style="visibility:hidden"> 
    <img src="spinningwheel" border="0" align="middle" hspace="20" vspace="5"/> Creating USER... 
</div> 

$(document).ready(function() { 
    displaydialog();  
}); 

function displaydialog(){ 
    $('#m2').dialog({ 
     autoOpen: false, 
     height: 100, 
     width: 250, 
     modal: true, 
     close: function() { 
       $(this).dialog('destroy'); 
       $(this).remove();   
      } 
    }); 
} 

$("#btncreate").click(function(){ 
    $("#m2").removeAttr('style');   
    displaydialog(); 
    $("#m2").dialog('open'); 
    //get a json request based on data if suceess 
    if(success){ 
     $("#m2").dialog('close'); 
    }else{ 
     $("#m2").dialog('close'); 
    } 

}); 

답변

1

@Derby,

$(document).ready(function() { 
     displaydialog();  
    }); 

    function displaydialog(){ 
     $('#m2').dialog({ 
      autoOpen: false, 
      height: 100, 
      width: 250, 
      modal: true, 
/*   close: function() { // No need to Destroy the dialog 
        $(this).dialog('destroy'); 
        $(this).remove();   
       }*/ 
     }); 
    } 

    $("#btncreate").click(function(){ 
     // $("#m2").removeAttr('style');   
     // displaydialog(); 
     $("#m2").dialog('open'); 
     //get a json request based on data if suceess 
     // if you are using ajax post, try to close this box as part of response handler (success/error). 
jQuery.ajax({ 
      data : {somekey : somevalue}, 
      datatype: 'json', 
      error : function(jqXHR, textStatus, errorThrown) { 
       $("#m2").dialog('close'); 
      }, 
      success : function(data, textStatus, jqXHR) { 
       $("#m2").dialog('close'); 
      }, 
      type : 'GET', 
      url : 'dummyURL' 
     }); 
    /* if(success){ 
      $("#m2").dialog('close'); 
     }else{ 
      $("#m2").dialog('close'); 
     } */ 

    }); 

당신은 파괴하고 M2 대화 매번 만들 필요가 없습니다. 문서 준비가 완료되면 displaydialog()를 호출 한 다음 대화 상자에서 열기 및 닫기를 사용하면됩니다. 대화 상자 (close)는 ajax get 요청을 호출 한 직후에 호출되기 때문에 (async : true를 사용하는 경우) 대화 상자가 표시되지 않습니다. 따라서 ajax 요청의 성공/오류에 대해 M2 대화 상자를 닫습니다.

0

는 브라우저 (로드되지, 그것을 renderize) 다시 웹을 renderize 것이다 그래서 당신은 늘 더 이상 DOM이 준비되어 있습니다. displaydialog를 호출 한 다음 열어보십시오. 효과가있을 것입니다. 어쨌든, 할 수있는 더 좋은 방법이 있습니다. 나는 당신의 문제가 논리라고 생각합니다. 하지만 그 해결책은 효과가 있습니다.

관련 문제