不允许关闭提示

时间:2016-10-11 16:46:25

标签: javascript

有没有办法阻止用户关闭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.");
}

4 个答案:

答案 0 :(得分:1)

检查null。如果您再次看到null提示或显示允许用户继续方便的消息。

本机模态(例如promptalert)非常粗糙。如果它足够重要,您可以考虑实施自己的或使用库。

示例: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)

如果用户关闭对话框,则loginnull

条件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