2014-06-17 4 views
3

버튼의 onclick이 EditContact 함수를 사용하도록 설정되어 있습니다. 이 함수는 jquery 대화 상자를 설정하고 서버에서 데이터를 가져 와서 표시합니다. 모든 것은 작동하지만 조금 더 잘 작동하도록하고 싶습니다. 지금은 빈 대화 상자가 나타나서 코드를 가져 와서 서버에서 내용을 가져 오면 대화 상자에 내용이 채워집니다. 내 질문은 콘텐츠를받을 때까지 대화 상자가 나타나지 않게하는 방법입니다.콘텐츠가 검색 될 때까지 jquery 대화 상자를 숨기는 방법은 무엇입니까?

function EditContact() { 
     $('#editContactView').dialog({ 
      modal: true, 
      width: 'auto', 
      position: ['top', 'center'], 
      resizable: false, 
      autoOpen: false, 
      open: function (event) { 
       var szAction = "Content url for this example"; 
       $(this).load(szAction, 
         function (response, status, xhr) { 
          $('#editContactView').dialog('open'); 
          return false; 
         }); 
      } 
     }); 

     $('#editContactView').dialog('open'); 

    } 

답변

1

본질적으로 당신이 가지고있는 것을 돌려서 $() .load() 완료에 대한 대화 상자를 열 수 있어야한다고 생각합니다. 이런 식으로 뭔가 그것을 할 수 있습니다

function editContact() { 
    var szAction = "Content url for this example"; 
    $(this).load(szAction, function (response, status, xhr) { 
     $('#editContactView').dialog({ 
      modal: true, 
      width: 'auto', 
      position: ['top', 'center'], 
      resizable: false 
     }); 
    }); 
} 

편집 : 공지 사항 내가 {: 거짓에 AutoOpen} 제거. 이렇게하면 콘텐츠가 만들어지고 한 번에 열립니다.

+0

이 작업은 수행해야 할 작업에 가깝지만 지금은 제대로 작동하지 않는다고 생각합니다. 내가 작동하게되면 다시 게시 할 것입니다. – user3648646

+0

이 경우에는'$ (this) .load()'가 실제로 $ ('# editContactView'). load()이어야한다고 생각합니다. – tengbretson

+0

문제점을 일으키는 구문 오류가 발생했습니다.이 솔루션이 효과가있었습니다. 입력에 감사드립니다. – user3648646

1

당신은 두 번 .dialog('open')를 호출 : 코드의 끝 부분과 로딩에 대한 콜백.

JavaScript는 비동기식이므로 데이터를 받기 전에 결국 $('#editContactView').dialog('open'); 행을 실행합니다.

이 줄을 제거하면 문제를 해결할 수 있습니다.

+0

제가 시도한 첫 번째 작업 이었지만 작동하지 않았습니다. 도와 줘서 고마워. – user3648646

관련 문제