javascript - 如何在警报时禁用 Esc 按钮事件?

标签 javascript jquery

我想在点击按钮时显示一条警告消息。按下警报弹出窗口的确定后,我将进行进一步处理。

这是预期的流程,但是当用户按下 Esc 按钮时,也没有单击“确定”,我的页面将进入进一步处理。我想限制此流程,即限制 Esc 按钮事件,但我找不到任何方法来执行此操作。

var keynum

if (window.event) { // For IE
  keynum = e.keyCode
} else if (e.which) { //For netscape Mozilla Firefox
  keynum = e.which
}

if (keynum == '113' && saleFlag == true) {
  var totalQty = document.getElementById('totalQty').textContent;
  var totalAmt = document.getElementById('totalAmount').textContent;

  alert("You Played Total Qty: " + totalQty + " of Rs. " + totalAmt);    
} else if (keynum === '27') {
  return false;
}

但警报消息仍处于关闭状态。

我想要在 113 键码事件上打开的警报消息。

最佳答案

alert() 的问题是它总是返回undefined,没有提示您按下了什么。相反,您可以使用 confirm() 来显示类似的弹出窗口。

但是,confirm 的优点是,如果您在弹出窗口中单击“确定”,它会返回一个true,如果您按下,它会返回一个false esc 或“取消”。

因此,使用 confirm,您可以使用 do-while 循环来不断弹出弹出窗口,直到用户按下“OK”(或按下 输入键)

请看下面的例子:

let res;
do {
  res = confirm("Popup");
} while(!res);

使用 native 确认/警告框不是很好的用户体验,因为它会卡住 UI 线程。如果可以避免,我建议使用 DOM 打开通过 HTML 构建的弹出窗口/模式。这可以通过使用库轻松完成。

关于javascript - 如何在警报时禁用 Esc 按钮事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572316/

相关文章:

javascript - 没有内联脚本,仍然得到 "Refused due to Content Security Policy directive: "script-src 'self' "

javascript - 具有自动加载功能的 html5 播放器无法正常工作

javascript - jquery如果url包含参数则触发点击

javascript - JS如何求最大公约数

javascript - 每次打开类 div 时,使 .delay() 和 .animate() 函数重新运行

javascript - 移动照片库应用程序

javascript - 如何使用 javascript 对象制作图像 map

javascript - 将脚本放入脚本中

javascript - 当 React 元素的文本更改时呈现 CSS 过渡

javascript - jQuery - 每个元素和每个子元素获取并设置高度