2013-11-14 92 views
1

我有一個叫做showModalConfirmDialog的函數,它創建一個帶有兩個按鈕的自定義JavaScript對話框是/否並調暗背景。現在在我的功能,我想調用該功能,如:自定義javascript確認對話框

var outcome = showModalConfirmDialog('Are you sure?'); 

我想根據點擊按鈕作出反應;

if(outcome == true){ 
    // do something 
} else { 
    // do something else 
} 

按鈕返回true/false。 Javascript代碼:

button1.onclick = function(evt){ 
    return true; 
}; 

button2.onclick = function(evt){ 
    return false; 
}; 

我不知道我錯過了什麼,任何幫助,將不勝感激。謝謝

+1

問題是什麼?它不顯示嗎? – LuigiEdlCarno

+0

它確實顯示,但我希望它像JavaScript確認功能一樣反應。我會詳細解釋一下;可以說我有一個名爲save()的函數;'在這個函數中我調用上面的代碼'var outcome = showModalConfirmDialog('Are you sure?');'並且根據'outcome'我正在做一些其他的東西,問題是save函數沒有等待用戶的響應/點擊,它返回undefined。 –

+0

我的意思是,我是否必須阻止某些東西停止執行其他腳本並等待用戶的點擊? @LuigiEdlCarno –

回答

5

您不能重現本機模式的行爲。相反,你可以使用回調。

這樣:

function showModalConfirmDialog(msg, handler) { 
    button1.onclick = function(evt){ 
     handler(true); 
    }; 
    button2.onclick = function(evt){ 
     handler(false); 
    }; 
} 
showModalConfirmDialog('Are you sure?', function (outcome) { 
    alert(outcome ? 'yes' : 'no'); 
}); 

或者這樣說:

function showModalConfirmDialog(msg, confirmHandler, denyHandler) { 
    button1.onclick = confirmHandler; 
    button2.onclick = denyHandler; 
} 
showModalConfirmDialog(
    'Are you sure?', 
    function() { alert('yes'); }, 
    function() { alert('no'); } 
); 
+0

謝謝@wared,那個工作:) –

+0

@ShaheMasoyan很高興幫助:) – leaf