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事件的键打开对话框?
onkeyup不会自动关闭对话框。等待你的解释:) – 2009-10-01 18:32:21
这主要是因为onkeydown不会被调用一次,它会在被按下时被连续调用,并且由于电脑运行速度如此之快,它在一次下压过程中会被多次调用。解决方案不是在被推下时调用,而是在最上面的部分调用它(当你放开时)。 在开关等电子产品中常常会发生。我忘了技术术语。 – 2009-10-01 18:42:50
当与开关相关时,该效果被称为“反弹” – belugabob 2009-10-01 18:55:30