2016-11-24 8 views
0

私は自分のスタイル付きモーダルでconfirm()機能をエミュレートしようとしています。私は、コールバックで関数を持っている:Javascript Button OnClickコールバック

function confirmChanges(callback) { 

    function clickOkay() { 
     callback(true); 
    } 

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

私はconfirmChangesがfalse/trueを返すように機能する必要がある場所このセクションでは、次のとおりです。

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()が定義されていません」というエラーが表示されます。

クリックしたボタンによって、真または偽を返すように修正するにはどうすればよいですか?

+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

関連する問題