2012-11-23 29 views
3

任何人都可以告诉我如何捕获div标签中的关键事件?如何从div标签捕获页面中的任何关键事件?

我写了这段代码,但它不工作?

<div id="SDiv" style="background-color: White; " onkeypress="kypress()"> 
    <asp:Label ID="LblSaveAndMoveNext" runat="server" Visible="False" Text="Save"></asp:Label> 
</div> 

<script type="text/javascript"> 
    function kypress() { EnableButtons(true);} 
</script> 
+0

div标签是不是这样您可以设置焦点的标签。 –

+0

您必须首先将焦点设置为div。请查看此链接以获取更多信息 [1]:http://stackoverflow.com/questions/3149362/capturing-key-press-event-in-div。 –

+0

然后如何实现。在我的页面中我没有表格标签。我的要求是当我按下页面中的任何键时,我应该调用kypress()函数。 – Lakki

回答

1

您必须有一个焦点才能触发按键事件。

或者您可以将按键应用于文档对象。

使用jQuery:

$(document).keypress(function(){ 
    /*do something*/ 
}); 
0

您可以通过使用一个DIV CONTENTEDITABLE,这样克服它。确保你返回false以防止html中的更改。

<div id="SDiv" contenteditable="true" 
    style="background-color: White; " tab-index="1" onkeydown="return keydown();"> 
     <asp:Label ID="LblSaveAndMoveNext" runat="server" Visible="False" Text="Save"></asp:Label>   
    </div> 


    <script type="text/javascript"> 
     function keydown(){ 
      var keyCode = event.which; 
      if(keyCode==13) 
       document.write('You pressed Enter'); 
      //do your logic here 
      return false; 
     } 
    </script> 
0

只有一个可以接收焦点的元素,比如输入和其他形式的相关元素,将触发关键事件。要强制<div>元素能够获得焦点,您可以使其成为可满足的元素,这可能不是您想要的,或者添加tabindex属性。使用值0将按照Tab键顺序将元素置于默认位置。

<div id="SDiv" tabindex="0" style="background-color: White;" 
    onkeypress="kypress()"> 
    ... 
</div> 
相关问题