2013-01-18 42 views
8

我試圖使用alertify.js作爲我確認腳本的確認對話框。但它不像普通的JS confirm那樣工作。在下面的代碼我從來沒有得到一個return trueJavascript提醒與確認返回

function aConf (mes) { 
    alertify.confirm(mes, function (e) { 
     return e; 
    }); 
} 

<a href="#" onclick="if(aConf(\'Are you sure you wish to remove this?\')) { function(); } return false;">Delete</a> 

當然,如果我與JS」 confirm它的工作原理更換aConf。那麼爲什麼alertify沒有給我回它的結果?

回答

9

由於確認是阻擋功能(無JavaScript的運行,直到它返回真/假),並且alertify是非阻塞(JS不斷執行)。 Alertify不會立即返回true/false,而是可能立即返回undefined,然後在用戶單擊OK或Cancel後稍後調用回調函數。您的示例中該回調函數的返回值不起作用,因爲onclick代碼已經完成運行(因爲它是非阻塞的)。

假設你使用的是這樣的:https://github.com/fabien-d/alertify.js/

這是怎麼回事實際上一個回調函數的作品,而不是返回值:

​​

對於您的代碼示例,你可以嘗試這樣的事:

function performDelete (a_element) { 
    // perform your delete here 
    // a_element is the <a> tag that was clicked 
} 

function confirmAction (a_element, message, action) { 
    alertify.confirm(message, function(e) { 
     if (e) { 
      // a_element is the <a> tag that was clicked 
      if (action) { 
       action(a_element); 
      } 
     } 
    }); 
} 

<a href="#" onclick="confirmAction(this, 'Are you sure you wish to remove this?', performDelete); return false;">Delete</a> 

編輯:更新爲通用確認對話框,如果用戶單擊確定,則調用回調函數。

+0

這就是問題所在。每次我打電話時,我都不想做出新的功能。我想有一個通用的功能來顯示和返回。謝謝。 – jfreak53

+0

您的意思是,如果用戶單擊確定,您希望鏈接導航到它的href?或者是否有一些JavaScript執行操作,如果用戶點擊確定?看到我更新的答案。 – Levi

+0

沒有,但是你貼什麼上面我現在可以調整做什麼,我需要的:)謝謝。 – jfreak53