javascript - 如何通过按回车按钮将焦点设置在下一个 "enable"输入框上

标签 javascript html css

我有一个有很多输入字段的表单,其中一些被禁用,一些被启用。当我按下回车键时,我希望焦点仅移动到下一个“已启用”输入框。启用或禁用框不是预先确定的,它取决于以前的表单输入。 我正在使用以下代码,但问题是如果出现某个禁用的框,光标会卡住。光标应该转到下一个启用输入框,最后它应该转到提交按钮。只有 AngularJS、CSS 或 Javascript 需要代码,jQuery 不需要(应用程序不支持 jQuery)。 提前致谢

     <html>
     <head>
       <title></title>
        <script type='text/javascript'>
    var inputs =document.querySelectorAll("input,select");
            for (var i = 0 ; i < inputs.length; i++) {
            inputs[i].addEventListener("keypress", function(e){
            if (e.which == 13) {
            e.preventDefault();
            var nextInput = document.querySelectorAll('[tabIndex="' + (this.tabIndex + 1) + '"]');
            if (nextInput.length === 0) {
            nextInput = document.querySelectorAll('[tabIndex="1"]');
         }
         nextInput[0].focus();
      }
   })
}
        </script>
     </head>
     <body>
            <form action="/action_page.php">
                    enable text box1 :<input type="text" onEvent="nextField(this);" /><br>
                    enable text box2 :<input type="text" onEvent="nextField(this);" /><br>
                    enable text box3 :<input type="text" onEvent="nextField(this);" /><br>
                    diable text box1 :<input type="text" name="lname" disabled><br>
                    enable text box3 :<input type="text" onEvent="nextField(this);" /><br>
                    enable text box3 :<input type="text" onEvent="nextField(this);" /><br>
                    <input type="submit" value="Submit">


                 </form>
      </form>
     </body>
    </html>

最佳答案

不使用 querySelectorAll,您可以让您形成元素并遍历事件元素之后的元素,直到找到下一个未禁用的元素,如下所示:

let form_elements = document.forms[0].elements;
let activeElementName = document.activeElement.name;
let activeElementIndex = Array.prototype.slice.call(form_elements ).indexOf(activeElementName);
let nextElementToFocus;
for (i = activeElementIndex + 1; i < form_elements.length-1; i++) {
   if (!form_elements[i].disabled) {
     nextElementToFocus = form_elements[i];
     break;
   }
}
nextElementToFocus.focus();

关于javascript - 如何通过按回车按钮将焦点设置在下一个 "enable"输入框上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55477445/

相关文章:

jquery - 在页面刷新时加载不同的图像

javascript - 无法通过 PHP 编辑 JSON 数组

javascript - 从 HTML 页面插入 XML

javascript - 什么是窗口.窗口?

javascript - 如何检测是否通过 gmail 中的电子邮件单击了链接

jquery - 最大高度流体图像响应不适用于 Chrome、Firefox 等,但适用于 Safari

JavaScript 模块模式 : user implementable function

php - 我应该如何存储不会经常更改的文本数据?

jQuery UI slider 自定义不起作用

css - MVC3 中的 WebGrid 与 RAZOR 对齐