当用户按下给定元素上的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事件中的键?
答案 0 :(得分:3)
如果有,请尝试onkeyup。如果有效,我会给你解释(忙)。
编辑说明: 这主要是因为onkeydown事件没有被调用一次,它在被按下时被连续调用,并且由于计算机操作速度如此之快(1秒对他们来说是永恒的),所以在一次下推期间会多次调用它。解决方法不是在按下它时调用它,而是在向上调用它(当你放手时)。
一直发生在带有开关和逻辑门等的电子产品中。我忘记了技术术语。