Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从div标记捕获页面中的任何关键事件?_Javascript - Fatal编程技术网

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

Javascript 如何从div标记捕获页面中的任何关键事件?,javascript,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 t

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

函数kypress(){EnableButtons(true);}

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

也可以在文档对象上应用按键

使用jQuery:

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

您可以通过使用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>

函数keydown(){
var keyCode=event.which;
如果(键代码==13)
document.write('您按Enter');
//你的逻辑在这里吗
返回false;
}

只有可以接收焦点的元素(如输入和其他表单相关元素)才会触发关键事件。要强制
元素能够接收焦点,您可以将其设置为contenteditable(这可能不是您想要的),或者添加
tabindex
属性。使用值0将在选项卡顺序中将元素放置在默认位置

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

...

请参考“线程”以获取答案

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

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


div标记不是可以设置焦点的标记。必须先将焦点设置为div。有关详细信息,请查看此链接[1]:。然后查看如何实现。在我的页面中,我没有表单标记。我的要求是,当我按下页面中的任何键时,我应该调用kypress()函数。