考虑以下代码:
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,我该怎么做才能使它无效?
答案 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
是否可以使用true
或false
执行适当的操作。
旁注:您可以以相同的名称调用您的函数及其中的变量,但这不是一个好主意。如果这是一种习惯,你最终会很难编写递归函数......