我正在尋找一個jQuery /漂亮的標準對話框的替代選擇。 jQuery UI有一個很好的UI,但它不會暫停腳本執行,以等待confirm()這樣的響應。下面的演示應該顯示兩個div,顯示前面的確認框的選擇,但jquery對話框不會導致腳本等待。jQuery確認框,暫停腳本執行
http://jsfiddle.net/EvilAmarant7x/r7Ur5/
我特別需要的東西,使腳本暫停。
感謝
我正在尋找一個jQuery /漂亮的標準對話框的替代選擇。 jQuery UI有一個很好的UI,但它不會暫停腳本執行,以等待confirm()這樣的響應。下面的演示應該顯示兩個div,顯示前面的確認框的選擇,但jquery對話框不會導致腳本等待。jQuery確認框,暫停腳本執行
http://jsfiddle.net/EvilAmarant7x/r7Ur5/
我特別需要的東西,使腳本暫停。
感謝
你用錯誤的方式對話框
你應該做這樣的
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Proceed: function() {
call_true_function();
$(this).dialog("close");
},
Cancel: function() {
call_false_function()
$(this).dialog("close");
}
}
});
或類似的東西
**編輯**
所以這樣的事情?
count = 0;
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Proceed: function() {
proceed();
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
});
function proceed(){
if (count != 10){
$("#dialog-confirm").dialog('open');
}else{
$('body').append("<div>Yes was selected " + count + " times!</div>");
}
}
不幸的是,如果你使用一個自定義的確認/模態窗口,這是不可能的。您將不得不使用回調或選擇使用隨1.5引入的新對象deferred。
使用延遲會是這個樣子:
var dfd = new $.Deferred();
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Proceed: function() {
dfd.resolve('Success!');
$(this).dialog("close");
},
Cancel: function() {
dfd.reject('Uh-oh!');
$(this).dialog("close");
}
}
});
dfd.then(function() {
// perform next action when user clicks proceed
});
dfd.fail(function() {
// perform some action when the user clicks cancel
});
^這樣例如 – Paul 2011-03-21 20:53:40
@保羅謝謝! – mcgrailm 2011-03-21 20:56:17
@mcgrailm雖然我意識到這是對話框應該被使用的方式,但是這種實現並不能很好地爲用戶提供一系列問題,然後根據聚合響應執行某些操作。或者,我只是想念它。我想不出有什麼辦法,至少不是沒有做回調函數Call_Question_N + 1()這樣的事情,這會在一系列對話框中創建下一個。對於像[this]這樣的東西,這看起來似乎是一個很鈍的解決方案(http://jsfiddle.net/EvilAmarant7x/r7Ur5/4/) – EvilAmarant7x 2011-03-22 12:57:21