【问题标题】:cancelling alert poppup in javascript在javascript中取消警报弹出
【发布时间】:2015-07-06 17:49:42
【问题描述】:

考虑这段代码:

function reason(id) {
    var reason = prompt("State reason");
    while (!reason.trim()) {
        reason = prompt("Please enter text");
    }
    document.getElementById(id).value = reason;
    return true;
}

它工作得很好,但是当我想通过按 Escape 来摆脱弹出窗口时,该函数返回 true,因为表单执行。如果我关闭/取消弹出窗口,我应该怎么做才能让它什么都不做?

【问题讨论】:

  • 返回假;应该适用于这两种情况
  • return reason; 可能有效 - 取消时提示返回 null。
  • @morbidCode 点击Cancel 相当于在promptconfirm 对话框中按Esc
  • @morbidCode:是的,但有效地按下转义键正在调用“取消”操作。另外,请注意 Safari 在取消时也会返回一个空字符串——它不区分取消和输入一个空字符串(通过MDN),因此您可能会陷入无限提示循环。

标签: javascript


【解决方案1】:

... 该函数返回 true,因为表单已执行。如果我关闭/取消弹出窗口,我应该怎么做才能让它什么都不做?

这完全取决于你如何调用reason 函数,但是如果你希望reasonprompt 被取消时返回false,那么:

function reason(id) {
    var reason = prompt("State reason");
    while (reason !== null && !reason.trim()) {  // *** Changed
        reason = prompt("Please enter text");
    }
    if (reason === null) {                       // *** Added
        return false;                            // *** Added
    }                                            // *** Added
    document.getElementById(id).value = reason;
    return true;
}

prompt 在您取消时返回null

但同样,由reason 调用truefalse 做适当的事情。


附注:您可以以相同的名称调用您的函数和其中的变量,但这不是一个好主意。如果这是一种习惯,你最终会让编写递归函数变得非常困难......

【讨论】:

  • @NG.:在第一个prompt 停止阅读我会得到什么。 :-) 谢谢,现在修好了。
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多