How can I set the focus on a Html element in Elm? I tried to set the autofocus attribute on the element and it only sets the focus on the page load.
The focus
function in the elm-lang/dom package is used to set focus with a Task
(without using any port
s or JavaScript).
Internally it uses requestAnimationFrame
to ensure any new DOM updates are rendered before it tries to find the DOM node to focus on.
An example use:
type Msg = FocusOn String | FocusResult (Result Dom.Error ()) update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = case msg of FocusOn id -> ( model, Dom.focus id |> Task.attempt FocusResult ) FocusResult result -> -- handle success or failure here case result of Err (Dom.NotFound id) -> -- unable to find dom 'id' Ok () -> -- successfully focus the dom
Full example on Ellie
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With