通过鼠标单击VS键快捷键触发事件

时间:2014-02-24 08:00:39

标签: javascript jquery html jqgrid

我有一个函数,当单击一个链接时,它将显示与JqGrid的表单对话框。

我的代码是这样的:

HTML:

<div id="mainDialog">
    <a href='#' class='showList'>Show list [Ctrl+L]</a>
    ....
</div>

Jquery的:

$('#mainDialog .showList').click(function(){
    showDialog({
        formid:"The_List",          
        path:"folder/subfolder",            
        height:820,         
        open:function(){}
    }); 
});     

表单对话框The_List来自另一个文件。在该文件中,我有这样的事情:

$("#dlgThe_List").bind('dialogopen',function(e){
    $("#listGrid").jqGrid({
        //set the grid properties
        ....
    });
});

使用它,在填充JqGrid表的对话框中,它可以正常工作。


但是,当我使用下面的代码触发上面的click函数时,会显示对话框,但JqGrid甚至不显示

$('#mainDialog').on('keydown', function(e){
    if (e.keyCode == 76 && e.ctrlKey){
        e.preventDefault();
        $('#mainDialog .showList').trigger('click');
    }
});

我首先想到的是showDialog脚本在创建jqGrid之前完成。 但从逻辑上讲,我认为没有区别,因为使用快捷键时,点击功能仍然会触发。

对此有何澄清?

修改 我创建JSFiddle demo与我的问题类似,但遗憾的是JqGrid不受支持。

1 个答案:

答案 0 :(得分:1)

我认为你也应该触发dialogopen事件:

$('#mainDialog').on('keydown', function(e){
   if (e.keyCode == 76 && e.ctrlKey){
      e.preventDefault();
      $('#mainDialog .showList').trigger('click');
      $("#dlgThe_List").trigger('dialogopen'); //<-----trigger it too
   }
});

如你所说,有一个拼写错误,你必须将你的id改为:

$('#mainDialog .showList')

属于这个:

 <a href='#' class='showList'>Show list [Ctrl+L]</a>

我已经更新了你的小提琴以及它在这里的工作:

Check the Demo

它带有一些本地数据。