在javascript中取消警报poppup

时间:2015-07-06 17:49:42

标签: javascript

考虑以下代码:

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

它工作得非常好,但是当我想通过按下escape来摆脱poppup时,该函数返回true,因为表单执行。如果我关闭/取消poppup,我该怎么做才能使它无效?

1 个答案:

答案 0 :(得分:3)

  

...函数返回true,因为表单执行。如果我关闭/取消poppup,我该怎么做才能使它无效?

这完全取决于您如何调用reason功能,但如果您希望reason在取消false时返回prompt,则:

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执行适当的操作。

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