如何从div标签中捕获页面中的任何关键事件?

时间:2012-11-23 08:33:28

标签: javascript

任何人都可以告诉我如何捕获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>

4 个答案:

答案 0 :(得分:1)

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

或者您可以在文档对象上应用按键。

使用jQuery:

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

答案 1 :(得分:1)

只有可以获得焦点的元素(如输入和其他与表单相关的元素)才会触发关键事件。要强制<div>元素能够获得焦点,您可以使其成为可信的,这可能不是您想要的,或者添加tabindex属性。使用值0将元素放置在Tab键顺序中的默认位置。

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

答案 2 :(得分:0)

你可以通过使用像这样的contenteditable div来克服它。确保返回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>

答案 3 :(得分:0)

请参阅主题“jQuery Event Keypress: Which key was pressed?”获取答案......

您需要设置div的tabindex属性,如下所示:

<div id="example" tabindex="1" />