2013-11-14 3 views
0

아약스 응답까지 부트 스트랩 모달을 닫지 못하도록하거나 응답이 거짓 인 경우 해고하지 않기를 원합니다. 내가 원하는 것은 모달아약스 응답까지 모달 닫기 방지

function shareKpi(kpiId,username){ 
       var shareUrl = "${createLink(action:'shareKpi',controller:'dashboard')}" 
       var msg; 
       jQuery.ajax({ 
        type: 'POST', 
        url: shareUrl, 
        data: "kpiId="+kpiId+"&sharedUser="+username, 
        success: function(response,textStatus){ 
         msg=response; 
        }, 
        error:function(XMLHttpRequest,textStatus,errorThrown){} 
       }); 
       return false; 
      } 

아약스 응답 할 때까지 해고 할 수 없습니다 : 여기

<div class="modal-body">  
<div class="control-group"> 
<div class="controls"> 
    <label for="sharedUser" class="control-label right">Share With:</label> 
    <input type="text" name="sharedUser" id="sharedUser" placeholder="Username to Share"> 
    <label class="help-block errorLabel fl width100" id="kpiNameError"></label>               </div> 
    </div> </div> 

모달 수행 할 작업을 결정하는 스크립트입니다 만 모달 본체 :
여기에 코드입니다 .
사실 나는 질문에 대해 명확하지 않으며이 질문은 추가 편집이나 제안에 열려 있습니다.
미리 감사드립니다.

답변

1

닫기를 실행하기 직전에 부트 스트랩에 의해 트리거 된 닫기 이벤트 (hide.bs.modal)에 콜백을 추가 할 수 있습니다.

상태를 유지하면 모달을 닫을 수 있는지 여부를 결정할 수 있습니다. 사용자가 모달을 닫고 아약스가 성공했을 때 (그리고 방문자가 닫을 수있게 허용) 표시 할 수 없을 때 닫기 아이콘을 숨기는 것이 좋습니다.

var ajaxSucceeded = false; 

function shareKpi(kpiId, username){ 
    var shareUrl = "${createLink(action:'shareKpi',controller:'dashboard')}", 
     msg; 

    jQuery.ajax({ 
     type: 'POST', 
     url: shareUrl, 
     data: "kpiId="+kpiId+"&sharedUser="+username, 
     success: function(response,textStatus){ 
      msg = response; 
      ajaxSucceeded = true; 
     }, 
     error:function(XMLHttpRequest,textStatus,errorThrown) { 
      // show error message 
      ajaxSucceeded = false; 
     } 
    }); 

    return false; 
} 

$('#myModal').on('hide.bs.modal', function() { 
    if (!ajaxSucceeded) { 
     // prevent closing of modal 
     return false; 
    } 
}); 
: 여기

더 당신을 도울 수있는 몇 가지 샘플 코드입니다