javascript - 如何在 sidenav 中自动对焦文本框

标签 javascript html css autofocus sidenav

所以我使用的是带有文本框的 sidenav,类似于 w3schools 中的示例代码:

 <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    body {
        font-family: "Lato", sans-serif;
    }
    
    .sidenav {
        height: 100%;
        width: 0;
        position: fixed;
        z-index: 1;
        top: 0;
        left: 0;
        background-color: #111;
        overflow-x: hidden;
        transition: 0.5s;
        padding-top: 60px;
    }
    
    .sidenav a {
        padding: 8px 8px 8px 32px;
        text-decoration: none;
        font-size: 25px;
        color: #818181;
        display: block;
        transition: 0.3s;
    }
    
    .sidenav a:hover {
        color: #f1f1f1;
    }
    
    .sidenav .closebtn {
        position: absolute;
        top: 0;
        right: 25px;
        font-size: 36px;
        margin-left: 50px;
    }
    
    @media screen and (max-height: 450px) {
      .sidenav {padding-top: 15px;}
      .sidenav a {font-size: 18px;}
    }
    </style>
    </head>
    <body>
    
    <div id="mySidenav" class="sidenav">
      <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
      <a href="#"><input type="text" autofocus="autofocus"/></a>
    </div>
    
    <span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span>
    
    <script>
    function openNav() {
        document.getElementById("mySidenav").style.width = "250px";
    }
    
    function closeNav() {
        document.getElementById("mySidenav").style.width = "0";
    }
     $(document).keyup(function(e) {
      if (e.keyCode == 27) {closeNav()} // escape
      if (e.keyCode == 83) {openNav()}  //s
    });
    </script>

   
         
    </body>
    </html> 

我想在 sidenav 打开时自动聚焦文本框。使用 autofocus = "autofocus" 似乎不起作用(就像我在上面的示例中尝试的那样)。我还希望它与我在代码中定义的 keyup 函数结合使用(按“esc”关闭,按“s”打开)。提前致谢。

最佳答案

id="f" 赋给 input 标签 和 在打开导航功能中

document.getElementById("f").focus();

<!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    body {
        font-family: "Lato", sans-serif;
    }
    
    .sidenav {
        height: 100%;
        width: 0;
        position: fixed;
        z-index: 1;
        top: 0;
        left: 0;
        background-color: #111;
        overflow-x: hidden;
        transition: 0.5s;
        padding-top: 60px;
    }
    
    .sidenav a {
        padding: 8px 8px 8px 32px;
        text-decoration: none;
        font-size: 25px;
        color: #818181;
        display: block;
        transition: 0.3s;
    }
    
    .sidenav a:hover {
        color: #f1f1f1;
    }
    
    .sidenav .closebtn {
        position: absolute;
        top: 0;
        right: 25px;
        font-size: 36px;
        margin-left: 50px;
    }
    
    @media screen and (max-height: 450px) {
      .sidenav {padding-top: 15px;}
      .sidenav a {font-size: 18px;}
    }
    </style>
    </head>
    <body>
    
    <div id="mySidenav" class="sidenav">
      <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
      <a href="#"><input type="text" id="f"></a>
    </div>
    
    <span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span>
    
    <script>
    function openNav() {
        document.getElementById("mySidenav").style.width = "250px";
        document.getElementById("f").focus();
    }
    
    function closeNav() {
        document.getElementById("mySidenav").style.width = "0";
    }
     $(document).keyup(function(e) {
      if (e.keyCode == 27) {closeNav()} // escape
      if (e.keyCode == 83) {openNav()}  //s
    });
    </script>

   
         
    </body>
    </html>

关于javascript - 如何在 sidenav 中自动对焦文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487449/

相关文章:

javascript - 单击内部元素时停止执行容器 div 中的 onClick 函数

javascript - 寻找更好的解决方案

javascript - 拖动原始元素 HTML5 拖放

html - 在边框 css 上显示文本

html - BFC margin 崩溃

javascript - 通过使用javascript从excel文件中读取excel数据来绘制折线图

javascript - 在除第一个 td 的 margin-top 和最后一个 td 的 margin-bottom 之外的所有 td 之间放置边距

javascript - jquery UI datepicker 没有显示在 html 输入文本上

html - 分配不重叠的 div

html - 使用CSS在DIV中图像下的动态高度/渐变