2017-12-13 41 views
0

그래서 나는 모든 레코드에 제거 버튼이있는 테이블을 가지고 있습니다. 버튼을 클릭 할 때 표시되는 확인 팝업을 추가하고 싶습니다.jQuery - 확인 팝업이 값을 반환 할 때까지 대기

var $confirmDialog = $('<div></div>') 
    .html('This record will be removed.') 
    .dialog({ 
    autoOpen: false, 
    title: 'Remove confirtmation', 
    buttons: { 
     "OK": function() { 
     $(this).dialog("close"); 
     return true; 
     }, 
     "Cancel": function() { 
     $(this).dialog("close"); 
     return false; 
     } 
    } 
    }); 

내 제거 버튼 이벤트 : Btw는

$(".removeButton").on("click", function(){ 
    if($confirmDialog.dialog('open')){ 
     var name = $(this).siblings(".someClassForNameHolder").text(); 
     var urlPath = $("#hiddenForUrl").val(); 
     Application.postRecord(name, "Remove", urlPath); 
    } 
}); 

, 난 몇 다음 사항이 : 나는 고유 ID를 가진 테이블의 모든 레코드를 제공 할 수

1), 그래서 내가 가진 내 removeButton 이벤트 (내 데이터 컬렉션 (name 변수)를 유지하려면 this.sibling ...을 사용할 수 있어야합니다.

2) 내 스크립트가 $confirmDialog 값을 반환 할 때까지 기다렸다가 코드 실행을 계속하기를 원합니다.

+0

무엇 URLPath로서, 기능 (데이터) {, Application.postRecord (이름은, "제거"'에 대한/* data.id * /}); ' –

+0

@ RokoC.Buljan 'function (data) {/*data.id*/}'이 무엇을해야하는지 정말로 모르겠다. 팝업 전화인가요? – user7803907

+0

신경 쓰지 마세요 :) 당신이 무엇을 요구하는지 명확하지 않습니다. 팝업 또는 확인 버튼 이벤트로 팝업 또는 반환 매개 변수에서 반환 값을 가져올 때까지 스크립트 실행을 중지 할 수 있는지 묻는 메시지가 나타납니다. –

답변

0

그냥이 urlPath 전역 변수에, 그리고 OK 핸들러 내부의 POST을 실행 할당합니다

var nameToRemove, urlPathToRemove; 

var $confirmDialog = $('<div></div>') 
    .html('This record will be removed.') 
    .dialog({ 
    autoOpen: false, 
    title: 'Remove confirtmation', 
    buttons: { 
     "OK": function() { 
     $(this).dialog("close"); 
     Application.postRecord(nameToRemove, "Remove", urlPathToRemove); 
     }, 
     "Cancel": function() { 
     $(this).dialog("close"); 
     return false; 
     } 
    } 
    }); 

    $(".removeButton").on("click", function(){ 
    if($confirmDialog.dialog('open')){ 
     nameToRemove = $(this).siblings(".someClassForNameHolder").text(); 
     urlPathToRemove= $("#hiddenForUrl").val(); 
    } 
    }); 
+0

전역 변수를 사용하는 방법에 대해 생각해 보았습니다.하지만 작동하지 않을 수도 있습니다.하지만 모든 것을 이벤트에 저장하는 것이 좋습니다. 나는'delay (tillExpression == true)'와 같은 것을 쓸 수 있는지 궁금 해서요. – user7803907

+0

더 좋은 방법은 (보통 이것은) 숨겨진 필드를 가진 폼을 만드는 것입니다 (이 경우'name') 해당 양식의 작업을 귀하의 URL로 동적으로 설정합니다 (항목을 클릭 할 때). 팝업 확인서를 작성하십시오. 따라서 기본적으로 숨겨집니다. 그런 다음 'Confirm'버튼을 해당 양식의 제출 버튼으로 만듭니다. 물론 대화 상자 기능을 사용하지 않을 것입니다. 그것은 당신이 지금 사용하고있는 메카니즘과는 조금 다릅니다. 그래서 그것을 제안하지 않았습니다. –

+0

yeap, 나는 내 아약스 포스트를 유지하고 싶지만, hiddens와 아이디어는 괜찮습니다. 그들에게 값을 할당하고, 내 팝업을 호출 한 다음 OK 단추 이벤트에서 ID로 다시 수집 할 수 있습니다. 지금은 그것이 최선의 해결책이라고 생각합니다. – user7803907