OK, upon double-checking the MDN docs for select
<https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select>and input
<https://developer.mozilla.org/en-US/docs/Web/Events/input>, I can confirm
that select does not fire "onInput". Elm does not have a built-in
"onChange" event handler, so I think that the custom event handler is the
only solution. And now I will stop pinging the thread :-)

On Mon, Feb 27, 2017 at 10:17 AM, Nick H <falling.maso...@gmail.com> wrote:

> (and Attr is an alias for Html.Attributes)
>
> On Mon, Feb 27, 2017 at 10:16 AM, Nick H <falling.maso...@gmail.com>
> wrote:
>
>> I am looking through some code where I successfully implemented a
>> drop-down menu, and it appears I wrote a custom event handler. "onInput"
>> did not work for me.
>>
>> Here is the function that I wrote (Evt is an alias for Html.Events).
>>
>> select : (String -> a) -> String -> List ( String, String ) -> Html a
>> select sendMsg selection options =
>>     let
>>         toOption ( value, label ) =
>>             Html.option
>>                 [ Attr.selected (selection == value)
>>                 , Attr.value value
>>                 ]
>>                 [ Html.text label ]
>>
>>         handler =
>>             Evt.on "change" (Json.map sendMsg Evt.targetValue)
>>     in
>>         Html.select [ handler ] (List.map toOption options)
>>
>> On Mon, Feb 27, 2017 at 6:53 AM, <agjf.tuc...@gmail.com> wrote:
>>
>>> I have been trying to use Html.select (the drop-down menu).
>>> Unfortunately the selected attribute doesn't seem to work for me.
>>>   Some context: I am attempting the exercises at the bottom of
>>> https://guide.elm-lang.org/architecture/effects/http.html.  As new
>>> topics are entered in the input box, they should be added to the drop-down
>>> menu.  I found this would sporadically cause the menu selection to jump
>>> around, so I tried to handle it manually using the selected attribute.
>>>   Anybody have any ideas how to do this so it works?  The relevant piece
>>> of code looks something like this:
>>>
>>> view : Model -> Html Msg
>>> view model =
>>>     div []
>>>         [ input [ onInput ChangeTopic ] []
>>>         , select [ onInput SelectTopic ]
>>>             (List.map
>>>                 (makeOption model.selectedTopic)
>>>                 (Set.toList model.allTopics)
>>>             )
>>>         , button [ onClick MorePlease ] [ text "Go!" ]
>>>         , img [ src model.gifUrl ] []
>>>         ]
>>>
>>> makeOption : String -> String -> Html msg
>>> makeOption selectedTopic topic =
>>>     option
>>>         (if topic == selectedTopic then
>>>             [ value topic, selected True ]
>>>          else
>>>             [ value topic ]
>>>         )
>>>         [ text topic ]
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Elm Discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to elm-discuss+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to