3

谁能告诉我如何在 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

4 回答 4

1

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

<div id="SDiv" tabindex="0" style="background-color: White;"
     onkeypress="kypress()">
    ...
</div>
于 2012-11-23T09:41:48.350 回答
1

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

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

使用 jQuery:

$(document).keypress(function(){
     /*do something*/
});
于 2012-11-23T08:38:35.297 回答
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>
于 2012-11-23T08:53:18.973 回答
0

答案请参考线程“ jQuery Event Keypress: Which key waspressed? ”...

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

<div id="example" tabindex="1" />
于 2014-03-20T18:30:04.017 回答