2016-11-24 3 views
0

Я пытаюсь подражать функции confirm() с помощью моего собственного модального мода. У меня есть функция с обратным вызовом:Javascript Button OnClick Callback

function confirmChanges(callback) { 

    function clickOkay() { 
     callback(true); 
    } 

    function clickCancel() { 
     callback(false); 
    } 
} 

Этот раздел является, где мне нужно confirmChanges, возвращающая истина/ложь:

if (unsavedChanges == true) { 
    j$('.confirm').showModal(); 
    if (confirmChanges(function(result) {return result;})) 
    { 
     // Do stuff and return true 
    } 
    else 
    { 
     return false; 
    } 
} 

Вот мой HTML я использую для модального:

<div class="warningpop confirm"> 

    <h3>Unsaved Changes!</h3>       
    <a id="modalContinue" value="Continue" onclick="clickOkay();"/> 
    <a id="modalCancel" value="Cancel" onclick="clickCancel();"/> 

</div> 

Однако, когда я нажимаю кнопки в диалоговом окне, я получаю сообщение об ошибке «clickCancel()/clickOkay() не определен».

Как я могу исправить это, чтобы он возвращал true или false в зависимости от нажатой кнопки?

+2

я думаю, это потому, что это как функция находятся в области видимости функции confirmChanges. http://www.w3schools.com/js/js_function_closures.asp –

+0

Я пытаюсь реализовать функциональность в этом ответе: http://stackoverflow.com/a/28245688/2087008 – SCGB

ответ

3

Это то, что вы хотите, или я ошибся? Не стесняйтесь спрашивать.

function getResponse(res, func) { 
 
    
 
    if(res) { 
 
    console.log(1); 
 
    //do something 
 
    } else { 
 
    console.log(2); 
 
    //do otherthing 
 
    } 
 
    
 
    /* If tou want to call some other function dynamically. */ 
 
    
 
    func(); 
 
} 
 

 
function one() { 
 
    console.log("calling function one"); 
 
} 
 

 
function two() { 
 
    console.log("calling function two"); 
 
}
<div class="warningpop confirm"> 
 

 
    <h3>Unsaved Changes!</h3>       
 
    <a id="modalContinue" value="Continue" onclick="getResponse(true, one);">Yes </a> 
 
    <a id="modalCancel" value="Cancel" onclick="getResponse(false, two);">No </a> 
 

 
</div>

+0

Спасибо Shubham, но мне нужно для возврата true или false на основе нажатой кнопки в этой точке 'if (confirmChanges (функция (результат) {результат возврата;})) { // Делаем вещи и возвращаем true }' – SCGB