Javascript 隐藏jQueryUI模式框内的表单后,不再调用Keypress

Javascript 隐藏jQueryUI模式框内的表单后,不再调用Keypress,javascript,jquery,Javascript,Jquery,我有一个jQueryUI模式框,其中包含一个表单 我声明了keypress事件来处理按下Enter键的情况。 如果隐藏模式框中包含的表单,则不再调用keypress事件 这里重现了这种行为: 第一次按Enter键时,我收到ok消息。然后表单被隐藏,第二次按Enter键时,我不再收到ok消息 你们知道我为什么和如何隐藏表单,并仍然有按键事件工作吗 谢谢 要在容器上有一个按键处理程序,您需要在容器内部有一个支持键盘交互的元素,比如输入。.dialog div中的任何元素都不支持在隐藏表单后立即删除。

我有一个jQueryUI模式框,其中包含一个表单

我声明了keypress事件来处理按下Enter键的情况。 如果隐藏模式框中包含的表单,则不再调用keypress事件

这里重现了这种行为:

第一次按Enter键时,我收到ok消息。然后表单被隐藏,第二次按Enter键时,我不再收到ok消息

你们知道我为什么和如何隐藏表单,并仍然有按键事件工作吗


谢谢

要在容器上有一个按键处理程序,您需要在容器内部有一个支持键盘交互的元素,比如输入。.dialog div中的任何元素都不支持在隐藏表单后立即删除。更多信息请点击此处:


添加
$('.dialog')。追加('')将使事件正常工作。当然,我不推荐这样做。

您可以这样做,而不是.hide()


如果它是隐藏的,它怎么能有焦点,这样你就可以在它里面按键了?ok按钮是模态框中没有隐藏的按钮,所以我希望隐藏表单不会改变模态框上的按键事件管理。它可以工作,但我希望表单占用的空间消失,而将不透明度设置为0 Function submit则不是这种情况(){alert('ok');$('dialog').css({minHeight:'0px',height:0,opacity:0});}由于我没有找到任何干净的解决方案,所以我使用了一个从您的
函数submit(){alert('ok');$('dialog').css({'position position':'absolute','left':'-500px'});}中得到启发的解决方法。
谢谢我尝试了添加$('dialog')。append('');在我的提交功能中,但结果相同(删除表单后不处理按键事件)
$('.dialog').on('keypress', function(e) {
    if (e.keyCode == $.ui.keyCode.ENTER) {
        submit();
    }
});
function submit() {
    alert('ok');
    $('.dialog form').hide();
}
$('.dialog form').css({
  opacity: 0
});