Я старался
$(":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: я нахожусь на странице ASP.NET, работающей под Sharepoint.
Я обнаружил, что для некоторых элементов он их находит (для фиксированных), а для некоторых нет. :(
jquery
input
jquery-selectors
Артем
источник
источник
$(document)
этоready()
?type="hidden"
? Щелкните страницу правой кнопкой мыши и просмотрите исходный код. Сгенерированный HTML также имеет значение. Без него и надлежащего SSCCE он снимает в темноте.Ответы:
Почему бы просто не выбрать те, которые вам нужны ( демо )?
$('form').find('input[type=text],textarea,select').filter(':visible:first');
редактировать
Или используйте jQuery : селектор ввода для фильтрации потомков формы.
$('form').find('*').filter(':input:visible:first');
источник
':input:visible:enabled:not([readonly]):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/
источник
Это мое резюме вышеизложенного, и оно отлично работает для меня. Спасибо за информацию!
<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>
источник
Это улучшение по сравнению с ответом @Mottie, потому что с jQuery 1.5.2
:text
выбираютсяinput
элементы, у которых нет указанногоtype
атрибута (в этом случаеtype="text"
подразумевается):$('form').find(':text,textarea,select').filter(':visible:first')
источник
Вот мое решение. Код должен быть достаточно простым для понимания, но вот идея:
Код:
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);
источник
Вы можете попробовать следующий код ...
$(document).ready(function(){ $('form').find('input[type=text],textarea,select').filter(':visible:first').focus(); })
<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>
источник