2009-10-01 148 views
2

我想在用户按下给定元素上的Enter或空格时打开jQuery UI对话框。看起来,输入/空格键正在由对话框处理,但是,导致按下了默认元素(取消按钮)。该对话框几乎一打开就关闭。jQuery UI--用onkeypress打开时立即关闭对话框Enter/Space

这里是一个简化的演示:

 
<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事件的键打开对话框?

回答

3

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

编辑Explantion: 这主要是因为onKeyDown事件不会被调用一次,而它的按下它被不断地叫,而且由于电脑opperate如此之快(1秒永恒他们)得到它的一个过程中调用多次按下。解决方法是不要在推下时调用它,而是在最上面调用它(当你放开时)。

在开关和逻辑门等的电子设备中都会出现。我忘了技术术语。

+0

onkeyup不会自动关闭对话框。等待你的解释:) – 2009-10-01 18:32:21

+1

这主要是因为onkeydown不会被调用一次,它会在被按下时被连续调用,并且由于电脑运行速度如此之快,它在一次下压过程中会被多次调用。解决方案不是在被推下时调用,而是在最上面的部分调用它(当你放开时)。 在开关等电子产品中常常会发生。我忘了技术术语。 – 2009-10-01 18:42:50

+0

当与开关相关时,该效果被称为“反弹” – belugabob 2009-10-01 18:55:30