2012-05-19 81 views
0
function Globally() { 
    $("#dialogid").dialog({ width: 300, modal: true, show: 'drop', hide: 'drop', 
     buttons: { 
      "Ok": function() { return true; $(this).dialog('close'); }, 
      "Cancel": function() { return false; $(this).dialog('close'); } 
     } 
    }); 
    } 

    function test() 
    { 
    if(Globally()) 
     alert("Ok"); 
    else 
     alert("Cancel"); 
    } 

我試圖做一個確認對話框,我希望它放置在一個函數(在這種情況下,在全球範圍內()),因爲我使用的確認對話框,在這麼多不同的功能,但是這不工作,從Globally()功能控制返回沒有得到true or false值。我希望它停在那裏,直到用戶按下Ok or Cancel。我怎樣才能做到這一點?jQuery UI的對話框,確認

+0

你可以檢查這個小提琴,檢查確認對話框http://jsfiddle.net/mostthingsweb/6Rumh/39/ –

+0

有一個易於使用的插件來做到這一點:[stackoverflow.com/questions/6457750/form - 確認 - 前提交 - fd748s7d8(http://stackoverflow.com/questions/6457750/form-confirm-before-submit%20%E2%80%93%20fd748s7d8) – 2012-09-27 11:30:10

回答

1

你必須使用內置的確認功能如果你想運行這樣的代碼:

var question = confirm("Proceed?") 
if (question){ 
    // continue 
} else { 
    // stop 
} 

那是因爲只用確認時,爲防止整個JavaScript執行,並允許您選擇一個答案或其他(確定,取消)。不是等待用戶的答案 - 即使你使用

if(Globally()) 
    alert("Ok"); 
else 
    alert("Cancel"); 

它只會執行全球()函數,並繼續後馬上

對話框像jQuery對話框不能阻止腳本執行等等。

如果你真的想用JQ對話框然後添加回調函數到您的按鈕。

"Ok": function() { callbackFunctionTrue(); }, 
"Cancel": function() { callbackFunctionFalse(); } 

並在測試函數中溝通if/else語句()。

0

是什麼;不是如何運作

只是做

"Ok": function() { alert('OK'); $(this).dialog('close'); }, 
    "Cancel": function() { alert('Not ok'); $(this).dialog('close'); } 

"Ok": function() { $(this).dialog('close'); test(1) }, 
    "Cancel": function() {$(this).dialog('close'); test(0) } 

function test(ok){ 
    alert(ok?"Ok":"Cancel"); 
}