使用jquery将第一个控件聚焦在表单中

Zak*_*ria 34 jquery

使用jquery如何在页面加载时将第一个元素(编辑字段,文本区域,下拉字段等)聚焦在表单中?

就像是:

document.forms[0].elements[0].focus();
Run Code Online (Sandbox Code Playgroud)

但是使用jquery.

另一个要求是,当表单具有class ="filter"时,不要聚焦第一个元素.

nic*_*ckf 69

$('form:not(.filter) :input:visible:enabled:first').focus()
Run Code Online (Sandbox Code Playgroud)

这将选择第一个可见的输入元素(<input />,<select>,<textarea>)不具有类filter的吧.


Zak*_*ria 34

对于后台我在rails app 上的ruby中使用了脚本.在尝试了所有答案并发现它们都无法正常工作后,通过搜索谷歌我发现这个代码片段有效:

$(function() {
  $("form:not(.filter) :input:visible:enabled:first").focus();
});
Run Code Online (Sandbox Code Playgroud)

结果是$('form :input:first')匹配每个表单上的rails插入的隐藏输入.


tva*_*son 13

我喜欢用类标记我选择的元素并按类选择,而不是将其保留到页面上元素的顺序.我发现这比在选择可能隐藏或不隐藏的元素时更新我的​​"真正的第一元素"算法更容易,可能会或可能不会被框架注入,...

  $(document).ready( function() {
     $('input.js-initial-focus:first').focus(); // choose first just in case
  });
Run Code Online (Sandbox Code Playgroud)

  • FWIW - 我现在将用于行为的类添加到"js"之前,以将它们与用于样式的类区分开来.不为行为重用样式类是一个好习惯,这有助于防止这种情况. (2认同)