2013-06-01 43 views
4

我爲我的對話框使用了Alertify Jquery插件。問題是,確認後的確認似乎不工作:Jquery alertify在確認無效後確認

<img onclick="go()" src="test.jpg"> 
<script type="text/javascript"> 
// confirm dialog 
function go(){ 

    alertify.confirm("Reset password?", function (e) { 
    if (e) { 
     // user clicked "ok" 
     secondconfirm(); 
    } else { 
     // user clicked "cancel" 
    } 
    }); 
} 

function secondconfirm(){ 

    alertify.confirm("Password is changed<br>Mail it to the user?", function (e) { 
    if (e) { 
     //Done 
     alertify.success("Password reset and mailed to user."); 
    } else { 
     // user clicked "cancel" 
     alertify.success("Password reset."); 
    } 
    }); 
} 
</script> 

我想是因爲基於點擊yes或no第二個問題已被要求使用這種方式。如果我這樣使用它,第二個確認對話框會很快出現,然後彈出屏幕。更令人討厭的是,覆蓋屏幕其餘部分的DIV保持原樣,所以我甚至無法在不刷新整個頁面的情況下使用該網站。我想這與第一個對話框淡出有關,也隱藏了第二個對話框。

如何解決這個問題?

+2

順便說一句,我可以建議包裹你的img元素在一個錨,並把click事件上錨?這樣,您的功能仍然可以通過鍵盤訪問(對於選擇不使用或無法使用鼠標或其他指針設備的用戶)。 – nnnnnn

+0

*或* - 但不太可能 - 他們沒有啓用JavaScript。 – George

+0

謝謝。實際的代碼更復雜,並使用錨點。我通過製作一個快速示例腳本來簡化它。 – Mbrouwer88

回答

2

嘗試通過setTimeout方法來延緩secondconfirm方法體的執行:

function secondconfirm() { 
    setTimeout(function() { 
     alertify.confirm("Password is changed<br>Mail it to the user?", function (e) { 
      if (e) { 
       //Done 
       alertify.success("Password reset and mailed to user."); 
      } else { 
       // user clicked "cancel" 
       alertify.success("Password reset."); 
      } 
     }); 
    }, 1000); // I went as low as 300 ms, but higher value is safer :) 
    return true; 
} 
+0

這樣做。 – Mbrouwer88

0

它真的需要alertify。我們可以試着確認一下自己嗎?

if(confirm("Reset password?")) 
{ 
// user clicked "ok" 
secondconfirm(); 
} 
else 
{ 
// user clicked "cancel" 
} 



function secondconfirm(){ 

    if(confirm("Password is changed<br>Mail it to the user?") { 
     //Done 
     alert("Password reset and mailed to user."); 
    } else { 
     // user clicked "cancel" 
     alert("Password reset."); 
    } 
}