Javascript 检测模式对话框上的按键不工作

Javascript 检测模式对话框上的按键不工作,javascript,jquery,html,modal-dialog,Javascript,Jquery,Html,Modal Dialog,我想检测用户在显示模式时是否按下了任何键。我尝试了以下代码,但未触发事件 代码段: $("#modal_confirmation_dp_change").on('keydown keyup input', function ( e ) { alert(); }); 如果我尝试测试click事件,它将被触发 $("#modal_confirmation_dp_change").on('click', function ( e ) {

我想检测用户在显示模式时是否按下了任何键。我尝试了以下代码,但未触发事件

代码段:

   $("#modal_confirmation_dp_change").on('keydown keyup input', function ( e ) {
         alert();
        });
如果我尝试测试click事件,它将被触发

   $("#modal_confirmation_dp_change").on('click', function ( e ) {
            alert();
        });

我正在使用twitter引导模式。我错过什么了吗

回答:
我找到了解决我问题的办法。似乎我不应该指向模式的id,以便检测按键事件。

您不应该使用这样的多个事件,因为根据事件计数,它将触发三次,一次用于
按键下,一次用于
按键上,另一次用于
输入。这仍然不是问题,问题是您正在触发的
单击。这是jQuery事件对象的事件,而您需要在DOM上触发
单击

$(document).on('keydown keyup input click',  function (e) {
if($('#modal_confirmation_dp_change').is(':visible')) {
            var key = e.which;
                if (key == 13) { //This is an ENTER 
                    $('#changed_dp_ok').click();
                }
        }
    });
您应该触发本机
。单击()
DOM事件:

$("#modal_confirmation_dp_change").on('keydown', function ( e ) {
    var key = e.which || e.keyCode;
    if (key == 13) {
        $('#changed_dp_ok')[0].click(); // <----use the DOM click this way!!!
    }
});
$(“#模式确认(dp)更改”)。打开('keydown',函数(e){
var key=e.which | e.keyCode;
如果(键==13){
$('#已更改_dp_ok')[0]。单击();//
&时代;
模态头
模态中的一些文本

接近
我找到了问题的解决方案。似乎我不应该指向模态的id,以便检测按键事件

$(document).on('keydown keyup input click',  function (e) {
if($('#modal_confirmation_dp_change').is(':visible')) {
            var key = e.which;
                if (key == 13) { //This is an ENTER 
                    $('#changed_dp_ok').click();
                }
        }
    });

我发现将焦点放在模态上是一个更好的解决方案


为了做到这一点,您必须向模式容器中添加一个
tabindex
参数,然后使用JavaScript设置其焦点。完成后,它可以接收键盘事件:

模式是如何创建的?您是否在事件中放置断点以查看它是否被触发?我正在使用twitter引导模式。我尝试在t中放置断点hat函数,但它没有被激发。另一方面,单击事件被激发。这应该有助于您放置html代码吗?检查添加的代码段。