2014-12-10 2 views
0

부트 스트랩 및 Jquery를 사용하여 Alert 및 ConfirmDialog와 같은 사용자 정의 대화 상자를 만들었습니다. 콜백에서 나는 아약스 전화를하고는 true를 돌려주는 경우 - - http://jsfiddle.net/eb71eaya/사용자 정의 확인 대화 상자가 제대로 작동하지 않습니다.

문제 오류 - 나는 다른 상태 성공와 경고를 보여 여기에

는 샘플입니다. 그러나 요청이 삭제되는 동안이 경고는 표시되지 않습니다. (예에서 그냥 경고를 보여, 아약스 요청을하지 않습니다, 그러나 그것은 또한 작동하지 않습니다.)

function getEsrbAlertDialog(title, msg, callBack, obj) { 
    var esrbAlertDialog = $('#esrb-dialog'); 
    if (esrbAlertDialog.length == 0) { 
     esrbAlertDialog = getEsrbDialog(title, msg); 
    } else { 
     $('.modal-title', esrbAlertDialog).html(title); 
     $('.modal-body', esrbAlertDialog).html(msg); 
    } 

    $('.modal-footer div', esrbAlertDialog).empty(); 
    $('.modal-footer div', esrbAlertDialog).append('<button class="btn btn-primary pull-right close-btn">Close</button>'); 

    $('.close-btn', esrbAlertDialog).unbind('click').click(function() { 
     if (typeof callBack === "function") { 
      todo = callBack(obj); 
     } 
     esrbAlertDialog.modal('hide'); 
    }); 

    return esrbAlertDialog; 
}; 

내가 확인 대화 상자가 폐쇄 될 때 콜백을 실행합니다.


업데이트 : 나는 다음과 같은 논리를 이해합니다 : 사용자가 "확인"버튼을 클릭하면 대화 상자가 닫혀 야합니다. 그리고 이미 닫혀있을 때 callBack을 실행해야하는 'hidden.bs.modal'이벤트를 발생시킵니다. 그러나 콜백은 대화 상자가 닫히는 것을 확인하기 전에 실행됩니다.

답변

1

이 줄 :

esrbConfirmationDialog.modal('hide'); 

두 번째 대화 상자가 숨어있다.

var esrbAlertDialog = $('#esrb-dialog'); 

은 별도의 대화 상자 경고에 대한 하나 확인을 위해 하나를 만들기 :


편집 :이 참조로 은 두 대화 상자 같은 DIV를 사용합니다.

+0

예. 하지만 확인을 닫기 위해 추가해야하는 업데이트는 무엇입니까? – demo

+0

콜백에 사용자 지정 대화 상자가 없을 때 확인 대화 상자가 닫히지 않습니다 – demo

+0

http://jsfiddle.net/eb71eaya/1/? – Jeroen

0

this.Alert 함수를 아래 코드로 바꾸십시오. 즉, e.preventDefault()를 추가하십시오.

this.Alert = function (dialogMsg, callBack, obj) { 

    var dlg = getEsrbAlertDialog('Alert', dialogMsg, callBack, obj); 
     e.preventDefault(); 
    dlg.modal('show'); 
}; 
+0

'e'는 정의되지 않았습니다. – demo

관련 문제