próbowałem
$(":input:not(input[type=button],input[type=submit],button):visible:first")
ale nic nie znajduje.
Jaki jest mój błąd?
UPD: wykonuję to na $ (dokument) .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>
aw debugowaniu widzę, że firstInput jest puste.
UPD2: Jestem na stronie ASP.NET działającej w programie Sharepoint.
Do tej pory odkryłem, że dla niektórych elementów je znajduje (dla naprawionych), a dla niektórych nie. :(
jquery
input
jquery-selectors
Artem
źródło
źródło
$(document)
jestready()
?type="hidden"
? Kliknij stronę prawym przyciskiem myszy i wyświetl źródło. Wygenerowany kod HTML również ma znaczenie. Bez niego i odpowiedniego SSCCE kręci się w ciemności.Odpowiedzi:
Dlaczego nie skupić się na tych, których chcesz ( wersja demonstracyjna )?
$('form').find('input[type=text],textarea,select').filter(':visible:first');
Edytować
Lub użyj jQuery : selektor danych wejściowych , aby odfiltrować elementy podrzędne.
$('form').find('*').filter(':input:visible:first');
źródło
':input:visible:enabled:not([readonly]):first'
Kod JQuery jest w porządku. Musisz wykonać w gotowym module obsługi, a nie w zdarzeniu ładowania okna.
<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>
Aktualizacja
Próbowałem na przykładzie Karim79 (dzięki za przykład) i działa dobrze: http://jsfiddle.net/2sMfU/
źródło
To jest moje podsumowanie powyższego i działa idealnie dla mnie. Dzięki za informację!
<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>
źródło
Jest to poprawa w stosunku do odpowiedzi @ Mottie, ponieważ od jQuery 1.5.2
:text
wybierainput
elementy, które nie mają określonegotype
atrybutu (w tym przypadkutype="text"
jest to implikowane):$('form').find(':text,textarea,select').filter(':visible:first')
źródło
Oto moje rozwiązanie. Kod powinien być łatwy do naśladowania, ale oto pomysł:
Kod:
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(); }
Następnie wywołaj po prostu focusFirst z elementem nadrzędnym lub selektorem.
Selektor:
focusFirst('form#aspnetForm');
Element:
var el = $('form#aspnetForm'); focusFirst(el);
źródło
Możesz spróbować poniższego kodu ...
$(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>
źródło