有没有办法阻止用户关闭Javascript中提供的提示?
我试图测试变量是否为null
但似乎不起作用(或者我无法解决)因为一旦关闭我假设它没有达到我的条件语句。有没有办法在提示消息中禁用close
选项?
我正在尝试让用户在提示消息框中输入回复 。我主要是一名C#开发人员,正在学习JS。我不知道如何在JS中测试它。原谅我有点困惑。
有任何帮助吗?谢谢大家的阅读。
我的代码:
var login = prompt("Who is this?");
if((login.toUpperCase()) !== "password" || (login === null)) {
alert("BEGIN SHUTDOWN","ERROR");
window.close();
} else {
alert("Access Granted.");
}
答案 0 :(得分:1)
检查null
。如果您再次看到null
提示或显示允许用户继续方便的消息。
本机模态(例如prompt
和alert
)非常粗糙。如果它足够重要,您可以考虑实施自己的或使用库。
示例:https://jsfiddle.net/37kw50wb/
<div id="start-container">
<input id="start" type="button" value="Start"/>
</div>
<div id="continue-container" style="display: none;">
Please continue when you're ready to enter a value:
<input id="continue" type="button" value="Continue"/>
</div>
document.getElementById("start").addEventListener("click", function () {
document.getElementById("start-container").style.display = "none";
do_prompt();
});
function do_prompt() {
var input;
input = prompt("Enter something");
if (input === null) {
document.getElementById("continue-container").style.display = "";
} else {
// we have a value, continue your program here
alert("Thank you");
}
}
document.getElementById("continue").addEventListener("click", function () {
do_prompt();
});
答案 1 :(得分:1)
如果用户关闭对话框,则login
为null
。
条件if ((login.toUpperCase()) !== "password" || (login === null)) {
将首先评估login.toUpperCase()
,但由于login
为null,因此会抛出异常:
未捕获的TypeError:无法读取null(...)
的属性'toUpperCase'
您需要首先测试login === null
:
if ( (login === null) || (login.toUpperCase()) !== "password") {
答案 2 :(得分:0)
您可以检查空字符串,然后再次创建提示。见下面的例子:
var msg = prompt("Write something here:");
while(msg === "" || msg === null)
{
//prompt again
}
当用户单击“确定”而框中没有任何输入时,会出现空字符串。用户单击取消时会出现空值。
答案 3 :(得分:0)
如果您想创建一个阻止关闭的提示,请不要使用javascript alert
功能。使用模态。它基本上是一个提示,是您页面的一部分。 http://www.w3schools.com/bootstrap/bootstrap_modal.asp