我想在用户按给定元素上的 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/