jQuery:如何找到第一个可见的输入/选择/文本区域(不包括按钮)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (70)

我试过

$(":input:not(input[type=button],input[type=submit],button):visible:first")

但什么也找不到。

我犯了什么错?

UPD:我在$(Document).load()上执行此操作

<script type="text/javascript">
$(window).load(function () {
  var aspForm  = $("form#aspnetForm");
  var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm);
  firstInput.focus();
});
</script>

在调试中,我可以看到FirstInput是空的。

UPD 2:我在ASP.NET页面下运行Sharepoint。

到目前为止,我已经发现,对于某些元素,它确实找到了它们(对于固定元素),而对于一些元素,却找不到它们。

提问于
用户回答回答于

为什么不直接瞄准你想要的

$('form').find('input[type=text],textarea,select').filter(':visible:first');

或者使用jQuery*投入选择器以过滤窗体后代。

$('form').find('*').filter(':input:visible:first');
用户回答回答于

JQuery代码很好。必须在就绪处理程序中执行,而不是在窗口加载事件中执行。

<script type="text/javascript">
$(function(){
  var aspForm  = $("form#aspnetForm");
  var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm);
  firstInput.focus();
});
</script>

扫码关注云+社区

领取腾讯云代金券