Я попробовал
$(":input:not(input[type=button],input[type=submit],button):visible:first")
но это ничего не находит.
Какова моя ошибка?
UPD: Я выполняю это на $ (документ) .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>
и в отладке I видят, что firstInput пуст.
UPD2: я нахожусь на странице ASP.NET, работающей под Sharepoint.
Я нашел до сих пор, что для некоторых элементов это действительно находит их (для фиксированных), и для некоторых не делают.:(
Почему бы просто не настроить таргетинг на те, которые вам нужны ( демонстрация )?
$('form').find('input[type=text],textarea,select').filter(':visible:first');
Редактировать
Или использовать селектор jQuery : input для фильтрации потомков формы.
$('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>
Обновление
Я пробовал на примере Karim79 (спасибо за пример), и он отлично работает: http://jsfiddle.net/2sMfU/