2014-09-24 54 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