why
Liveview: phx-click resets form input
Hello,
on a LiveView page, I have a form whose single text input gets cleared when I click on a separate, unrelated div that uses phx-click.
I would like the input not to be affected by the phx-click, if possible. Is there a way to accomplish this, or is this a limitation in LiveView?
I pasted my code below. Steps to reproduce:
- Type some text (one or two sentences) into the input (without submitting)
- Click on the “click me” text
- Input field is now cleared
def render(assigns) do
~L"""
Live Text: <%= @live_text%>
<form phx-change="type_live" phx-submit="submit", placeholder="Type something...">
<input type="text" name="q" value="<%= @query %>"/>
</form>
<div phx-click="test" phx-value-test="successfully clicked"><%= @test%></div>
"""
end
def mount(_params, _session, socket) do
{:ok, assign(socket, query: nil, live_text: "", test: "click me")}
end
def handle_event("type_live", %{"q" => query}, socket) do
live_text = query
{:noreply, assign(socket, live_text: live_text)}
end
def handle_event("submit", %{"q" => query}, socket) do
{:noreply, assign(socket, query: query)}
end
def handle_event("test", %{"test" => test}, socket) do
{:noreply, assign(socket, test: test)}
end
Marked As Solved
benwilson512
I think this is because as you were typing, the text field had focus, and phoenix won’t overwrite a form field that is actively in focus and being typed in. Otherwise there would be race conditions between the text being entered and the server’s knowledge / re-rendering of the field being actively typed in. When you clicked on the div, the input lost focus and could be overwritten.
Also Liked
why
Ah, that makes a ton of sense, thanks!
Btw, the reason why I’m using the @live_text assign at all (rather than just @query) is that I wanted to be sure that phx-change isn’t somehow locally (via js) updating the value of @query. The data seemed to come back so incredibly quickly from the remote server that I wanted to be double sure… LV is pretty incredible…
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








