我试过
$(":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是空的。
UPD2: 我在Sharepoint下运行ASP.NET页面。
到目前为止,我发现对于某些元素,它确实找到了它们(对于固定的元素),有些则没有。 :(
答案 0 :(得分:158)
为什么不定位你想要的那些(demo)?
$('form').find('input[type=text],textarea,select').filter(':visible:first');
修改强>
或者使用jQuery :input选择器来过滤表单后代。
$('form').find('*').filter(':input:visible:first');
答案 1 :(得分:12)
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>
<强>更新强>
我尝试了Karim79的示例(感谢您的示例)并且工作正常:http://jsfiddle.net/2sMfU/
答案 2 :(得分:6)
这是我对上述内容的总结,对我来说非常适合。感谢您的信息!
<script language='javascript' type='text/javascript'>
$(document).ready(function () {
var firstInput = $('form').find('input[type=text],input[type=password],input[type=radio],input[type=checkbox],textarea,select').filter(':visible:first');
if (firstInput != null) {
firstInput.focus();
}
});
</script>
答案 3 :(得分:2)
这是对@ Mottie的回答的改进,因为从jQuery 1.5.2开始class AddAccountNumberToUsers < ActiveRecord::Migration
def change
add_column :users, :account_number, :string
add_index :users, :account_number
end
end
选择没有指定:text
属性的input
元素(在这种情况下type
1}}暗示):
type="text"
答案 4 :(得分:0)
这是我的解决方案。代码应该很容易遵循,但这里的想法是:
代码:
function focusFirst(parent) {
$(parent).find('input, textarea, select')
.not('input[type=hidden],input[type=button],input[type=submit],input[type=reset],input[type=image],button')
.filter(':enabled:visible:first')
.focus();
}
然后只需使用您的父元素或选择器调用focusFirst。
选择器:
focusFirst('form#aspnetForm');
元素:
var el = $('form#aspnetForm');
focusFirst(el);
答案 5 :(得分:0)
您可以尝试以下代码......
$(document).ready(function(){
$('form').find('input[type=text],textarea,select').filter(':visible:first').focus();
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<form>
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
<input type="submit" />
</form>
&#13;