【问题标题】:Alertify does not stop for promptAlertify 不会因提示而停止
【发布时间】:2014-11-19 08:47:49
【问题描述】:

所以我有这些代码行:

$('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 语句而不做其余的事情。这是为什么?为什么它不会在提示符处停止以便用户可以输入内容?我怎样才能解决这个问题?谢谢!

【问题讨论】:

  • 您的代码可能希望在您的函数内执行时。执行不会暂停,提示正在异步触发。你可能想在你的函数中使用 if(str!= "")。
  • 这不是你的问题,但我也注意到你有 prompt(message, function) 而不是 prompt(message, value, function);也许尝试添加“”(空字符串)作为您的默认值?为了获得最佳实践。

标签: javascript c# jquery prompt alertify


【解决方案1】:

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");

【讨论】:

  • 我会试一试并再次评论!感谢您的快速回复!
  • 不幸的是,这并没有做到。该程序执行与以前完全相同的操作。提示出现一两秒钟,然后在用户输入任何内容或单击确定/取消之前消失。似乎函数 e 从未被调用,因为我在 if (e) 之后执行 console.log 并且在控制台中没有写入任何内容。有什么想法吗?
  • @Zez3 此代码正在运行:jsfiddle.net/gd883hqj(每次出现警报框时都需要单击运行)。您的问题一定出在其他地方。
  • 是的,从一开始你就是对的!我设法让它工作。谢谢!
猜你喜欢
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2012-12-11
  • 2018-12-12
相关资源
最近更新 更多