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

时间:2009-10-01 18:17:09

标签: jquery-ui dialog

当用户按下给定元素上的enter或space时,我想打开一个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>

如果按钮被赋予焦点,然后用户按下空格,则会打开对话框,然后立即关闭。如果用户按下回车键,对话框会快速关闭甚至不闪烁(至少这是我对Firefox 3.5.3的体验)

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

1 个答案:

答案 0 :(得分:3)

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

编辑说明: 这主要是因为onkeydown事件没有被调用一次,它在被按下时被连续调用,并且由于计算机操作速度如此之快(1秒对他们来说是永恒的),所以在一次下推期间会多次调用它。解决方法不是在按下它时调用它,而是在向上调用它(当你放手时)。

一直发生在带有开关和逻辑门等的电子产品中。我忘记了技术术语。