2012-07-13 16 views
9

Sto utilizzando l'attributo contenteditable su un <div> per farlo funzionare come un campo di testo su richiesta (per gli utenti di rinominare qualcosa). Ma voglio abilitare anche autofocus, in modo che gli utenti possano iniziare a digitare immediatamente (lo ha sempre contenteditable attivato inizialmente).Posso utilizzare l'autofocus su un elemento con contenteditable?

È valido e/o possibile? O dovrò passare a un input di testo standard?

risposta

10

Dovrai farlo con JavaScript nella maggior parte dei browser, penso. E non funzionerà su iOS, che consente solo l'uso programmatico di focus() in un gestore di eventi di un'interazione utente reale (come un evento click o di tipo touch).

Inoltre, tieni presente che se ci sono altri input sulla pagina, è possibile che l'utente possa concentrarsi su uno di quelli prima che il documento sia completamente caricato, nel qual caso è quindi molto fastidioso per l'utente trovare il focus è stato spostato da sotto di loro quando si attiva l'evento load, quindi è necessario utilizzare gli eventi focus degli input per tracciare questo.

<div contenteditable="true" id="editable"></div> 

<script type="text/javascript"> 
    window.onload = function() { 
     document.getElementById("editable").focus(); 
    }; 
</script> 
+2

Se l'attributo di autofocus HTML5 inizia a supportare elementi contenteditable, potrebbe essere una soluzione migliore. Tuttavia attualmente funziona solo con gli elementi del modulo: https://developer.mozilla.org/en-US/docs/Web/HTML/Forms_in_HTML#The_autofocus_attribute – Loren

+0

In realtà non è necessario 'onload' per' focus'. – Qwertiy

1

Per gli spettatori futuri:

Penso di avere una soluzione un po 'più elegante.

Quindi, una volta caricata la pagina ... BAM jQuery si concentra sull'elemento con l'attributo 'autofocus'!

È possibile giocare con il selettore per ottenere esattamente ciò che si desidera.

Problemi correlati