我在Phoenix LiveView中有一个带有phx提交绑定的表单。可以通过单击“发送”按钮或在文本字段中按Enter键来提交表单。
我的问题是,如果我按回车键提交表单,输入字段IS NOT清除,但是如果我通过点击按钮的输入域提交IS清除。
我希望在两种情况下都清除输入字段。
下面是我的表格:
<%= f = form_for :chat_form, "#", phx_submit: :send, phx_target: @myself %>
<%= text_input f, :msg, autocomplete: "off" %>
<%= submit "Send" %>
</form>
和我的handle_event
实现:
def handle_event("send", %{"chat_form" => %{"msg" => msg}}, socket) do
name = socket.assigns.name
Endpoint.broadcast("chat", "new_msg", %{sender: name, text: msg})
{:noreply, socket}
end
我认为您的问题可能与此有关-https://github.com/phoenixframework/phoenix_live_view/issues/624。基本上,Liveview不会修改重点输入。
因此,当您按Enter键时,您的焦点将放在文本输入上。
但是,当您单击“提交”时,您的焦点将更改为使Liveview重置文本输入的按钮。
我认为至少有两种解决方案:
msg
值添加到您的状态,value: @msg
在模板中使用,然后在中重置它handle_event
(也许我会先尝试一下)希望它能对我有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句