jquery-ui - jQuery UI - 使用 onkeypress Enter/Space 打开对话框时立即关闭

标签 jquery-ui dialog

我想在用户按给定元素上的 Enter 或空格键时打开 jQuery UI 对话框。然而,对话框似乎正在处理输入/空格键,从而导致按下默认元素(取消按钮)。该对话框几乎一打开就关闭。

这是一个简化的演示:

<script type="text/javascript">
    function Go() {
        $("#dialog").text("Are you sure?").dialog({
            modal: true,
            buttons: {
                Cancel: function() {
                    $("#dialog").dialog("destroy");
                },
                OK: function() {
                    $("#dialog").dialog("destroy");
                }
            }
        });  // end .dialog
    }
</script>

<input type="button" value="Test" onkeydown="Go()" />
<div title="Dialog" style="display: none;" id="dialog"></div>

如果按钮获得焦点,然后用户按空格键,对话框将打开,然后立即关闭。如果用户按下 Enter 键,对话框会很快关闭,甚至不会闪烁(至少这是我使用 Firefox 3.5.3 的体验)

如何防止对话框处理导致对话框打开的 onkeydown 事件中的按键?

最佳答案

如果有 onkeyup,请尝试一下。如果有效的话,我会给你解释(忙)。

编辑解释: 这主要是因为 onkeydown 事件不会被调用一次,它在按下时会不断被调用,并且由于计算机运行速度如此之快(1 秒对它们来说是永恒的),因此在按下时会被多次调用。解决方案是在按下时不要调用它,而是在向上的部分(当你放开时)调用它。

这种情况在带有开关和逻辑门等的电子产品中经常发生。我忘记了技术术语。

关于jquery-ui - jQuery UI - 使用 onkeypress Enter/Space 打开对话框时立即关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1505580/

相关文章:

jquery - 在 jquery 上处理多个事件处理程序按键

jquery 对话框正在清除我的表单字段,我需要从 jquery 对话框返回一个值

javascript - CKEditor 调用 openDialog 我淡出但没有对话框

MATLAB:输入以确认输入对话框?

java - Android - 手机锁定时显示来自服务的警报对话框

javascript - 如何控制IE6+jQuery+jQuery-ui内存泄漏?

jquery-ui - jQuery UI effect() 方法 - 每个效果的选项是什么?

jquery - 我需要一个 jquery Accordion 来为每个部分的箭头图标使用不同的图像文件

javascript - 带有 ASP.NET 的 jQuery UI 模式确认对话框未触发 onClick 事件

c# 控制台应用程序 - 防止默认异常对话框