2016-11-24 119 views
0

我試圖用我自己風格的模式來模擬confirm()功能。我有一個回調函數:Javascript按鈕OnClick回調

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,但我需要根據此時按下的按鈕返回真或假 'if(confirmChanges(function(result){return result;})) {//做東西並返回true } – SCGB