2014-09-24 52 views
1

所以我有幾行代碼:Alertify不停止提示

$('td').click(function (e) { 
    var test = "...."; 
    var test2 = "...."; 
    var test3 = "...."; 
    SuppressWarning(test, test2, test3); 
}); 

function SuppressWarning(test, test2, test3) 
{ 
    var reason = prompt("Why are you suppressing this warning?"); 
    if(reason != "") 
    { 
    //do something 
    } 

當系統運行時,它停止在提示符下,除非用戶交互不進行if語句。 但是,我想定製警報框,因此我決定使用alertify.js。

所以我現在已經結束了與此代碼:

$('td').click(function (e) { 
var test = "...."; 
var test2 = "...."; 
var test3 = "...."; 
SuppressWarning(test, test2, test3); 
}); 

function SuppressWarning(test, test2, test3) 
{ 
var reason = alertify.prompt("Message", function (e, str) { 
if (e) { 
    // user clicked "ok" 
} else { 
    // user clicked "cancel" 
} 
}, "Default Value"); 

if(reason != "") 
    { 
    //do something 
    } 

我的問題是,該系統運行時,它不會在提示符下停止;它只是去if語句沒有,剩下的就做了。這是爲什麼?爲什麼不停止提示,以便用戶可以輸入內容?我怎樣才能解決這個問題?謝謝!

+1

您的代碼可能希望在您的函數內執行。執行不會暫停,提示將被異步觸發。你可能想要在你的函數中使用(str!=「」)。 – Hammerstein 2014-09-24 18:39:40

+0

這不是你的問題,但我也注意到你有提示(消息,函數)而不是提示(消息,值,函數);也許嘗試添加「」(空字符串)作爲默認值?爲了最佳實踐。 – Termato 2014-09-24 18:43:08

回答

5

prompt是原生的瀏覽器,並停止當前的代碼流,就像一個警告框或確認。另一方面,alertify不會。如果觸發alertify,腳本不會停止。

這就是爲什麼alertify接受回調作爲參數。在用戶按okcancel後觸發function(e, str)str參數是用戶輸入的內容。只需在回調中移動條件即可:

alertify.prompt("Message", function (e, str) { 
    if (e) { 
     // user clicked "ok" 
     if(str != "") 
     { 
      //do something 
     } 
    } else { 
     // user clicked "cancel" 
    } 
}, "Default Value"); 
+0

我會再試一次,再評論一次!感謝你能這麼快回復! – Zez3 2014-09-24 19:02:11

+0

不幸的是,這並沒有做到這一點。該程序的功能與以前完全相同。提示會出現一兩秒鐘,然後在用戶甚至可以輸入任何內容或點擊確定/取消之前消失。看起來函數e從來沒有被調用,因爲我在if(e)之後做了console.log,沒有任何東西寫在控制檯中。有任何想法嗎? – Zez3 2014-09-25 07:59:21

+0

@ Zez3此代碼正在工作:http://jsfiddle.net/gd883hqj/(需要點擊每次運行警報框時運行)。你的問題必須在其他地方。 – 2014-09-25 12:34:17