查找任何表单元素

Find any form element

本文关键字:元素 表单 任何 查找      更新时间:2023-09-26

我试图找到一个类是否存在,如果不是,只是找到第一个表单元素。我怎么写:输入?这似乎行不通。

$('.focus:not(:hidden):first, :input:not(:hidden):first').focus();

号分隔的选择器不像您似乎指示的那样分层。您的选择器将生成第一个可见.focus第一个可见输入元素。您需要将其分解为两个选择器:

var focusElement = $('.focus:visible:first');
if(focusElement.length == 0)
    focusElement = $(':input:visible:first');
focusElement.focus();

或者我想你可以写

$('.focus:visible:first, body:not(:has(.focus:visible)) :input:visible:first').focus();

你的代码实际上对我有用。看看这个jsfiddle。尝试删除我的class='focus',然后它会回退到选择第一个输入字段。

我会选择易于理解的模型:

var finder = $('.focus:not(:hidden):first');
finder = finder.length ? finder: $(':input:not(:hidden):first');
finder.focus();

相同的结果,但考虑到从右到左的嘶嘶声,可能会更好:性能

var finder = $('.focus').not(':hidden').eq(0);
finder = finder.length ? finder: $(':input').not(':hidden').eq(0);
finder.focus();