2011-11-26 12 views

Odpowiedz

3

Będziesz musiał polegać na javascript, aby to zrobić, ponieważ Autofocus html5 nie jest obsługiwany w IE. Tutaj jest dobry blog na ten temat: http://www.html5tutorial.info/html5-autofocus.php

Zasadniczo najpierw sprawdź, czy atrybut jest obsługiwany, a następnie użyj javascript, aby ręcznie ustawić ostrość we wspomnianym sygnale wejściowym, używając metody focus(), jeśli tak nie jest.

+0

Na dzień dzisiejszy, 12/13/2016, słowo kluczowe autofocus działa w IE 11.0.36 na Windows 10, ale nie na IE 11.0.35 na Windows 7. Jak bardzo irytuje. –

-3

autofocus w IE jest to tylko

<input type="text" id="searchbar" autofocus /> 

nie

<input type="text" id="searchbar" autofocus="autofocus"/> 

Zobacz http://msdn.microsoft.com/en-us/library/windows/apps/hh441087(v=vs.85).aspx aby uzyskać więcej informacji.

+3

Mylisz się. Obie składnie działają we wszystkich przeglądarkach obsługujących 'autofocus'. Jednak przeglądarka Internet Explorer obsługuje go tylko od wersji 10. – duri

+0

Więc w jaki sposób mogę uwzględnić oba, aby działał w obu przeglądarkach? – James

+0

To jest nieprawidłowe. Zobacz http://stackoverflow.com/a/25449778/1430996 –

32

Oto jedna wkładka (no, jedna linia rzeczywistego logiki), który używa jQuery zrobić pracę autofokusa w IE. Wygrywa, jeśli fokus jest już ustawiony - innymi słowy, w dowolnej przeglądarce obsługującej HTML5.

$(function() { 
    $('[autofocus]:not(:focus)').eq(0).focus(); 
}); 

Wyjaśniłem, jak to działa in my blog. I here jest zaktualizowanym jsFiddle, który działa w IE.

+0

Co jeśli jest (omyłkowo) * dwa * elementy z atrybutem 'autofocus'? Czy w zgodnych przeglądarkach ten kod nie znajdzie drugiego (nieaktywnego) elementu i zamiast tego ustawi fokus? – xec

+3

Nie, @xec, do czego służy '.eq (0)'. Poza tym, jeśli są dwa elementy "autofokusa", to jest to błąd na stronie i naprawdę nie ma znaczenia, który z nich się skupi, prawda? –

+2

'.eq (0)' jest wywoływane po uruchomieniu selektora ': not (: focus)', więc to nie ma znaczenia. Zgadzam się, że to nie jest duży problem, to tylko błąd, gdy html jest nieprawidłowy. W każdym razie uważam, że '$ ('[autofocus]'). Focus()' powinien wystarczyć. – xec

Powiązane problemy