2011-11-26 13 views

risposta

3

Dovrai fare affidamento su javascript per eseguire questa operazione, poiché l'autofocus html5 non è supportato in IE. C'è una buona post del blog su di esso qui: http://www.html5tutorial.info/html5-autofocus.php

In sostanza, in primo luogo verificare se l'attributo è supportato, e quindi utilizzare Javascript per mettere a fuoco manualmente in detto ingresso utilizzando il metodo focus() se non lo è.

+0

A partire da oggi, 13/12/2016, la parola chiave autofocus funziona in IE 11.0.36 su Windows 10 ma non su IE 11.0.35 su Windows 7. Come molto irritante. –

-3

autofocus in IE è è solo

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

non

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

Vedi http://msdn.microsoft.com/en-us/library/windows/apps/hh441087(v=vs.85).aspx per maggiori informazioni.

+3

Ti stai sbagliando. Entrambe le sintassi funzionano in tutti i browser che supportano 'autofocus'. Tuttavia, Internet Explorer lo supporta solo dalla versione 10. – duri

+0

Quindi, come faccio a includere entrambi in modo che funzioni in entrambi i browser? – James

+0

Questo non è corretto. Vedi http://stackoverflow.com/a/25449778/1430996 –

32

Ecco una battuta (beh, una riga della logica reale) che utilizza jQuery per rendere il lavoro messa a fuoco automatica in IE. Si mette in guardia se lo stato attivo è già impostato - in altre parole, in qualsiasi browser che supporti HTML5.

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

Ho spiegato come funziona in my blog. E here è un jsFiddle aggiornato che funziona in IE.

+0

Cosa succede se c'è (per errore) * due * elementi con l'attributo 'autofocus'? Nei browser compatibili, questo codice non troverà il secondo elemento (non focalizzato) e metterà invece a fuoco l'obiettivo? – xec

+3

No, @xec, questo è ciò che il '.eq (0)' è per. Inoltre, se ci sono due elementi "autofocus", allora questo è un bug nella pagina e non importa quale sia il focus, giusto? –

+2

Il '.eq (0)' viene chiamato dopo che viene eseguito il selettore ': not (: focus)', quindi non fa differenza. Sono d'accordo sul fatto che non è un grosso problema, ma è solo un bug quando l'html non è valido. In ogni caso, credo che $ $ ('[autofocus]'). Focus() 'dovrebbe essere sufficiente. – xec