How to disable LiveView form filling

Incredible I can’t figure this out, but I want a <select> that will log me in. Only issue is that LiveView will keep whichever option I selected as checked when I logout. I tried passing a selected option, also a phx_auto_recover: "ignore", what am I missing?
How can I tell phoenix “hey, when this form is submitted, forget everything about it and start fresh next time”?

<%= form_for @conn, "/example", fn form -> %>
   <%= select(form, :example,
      [{"a", "a"}, {"b", "b"}, {"c", "c"}],
      prompt: [key: "Example:", disabled: true],
      phx_auto_recover: "ignore",
      selected: "",
      onchange: "this.form.submit()")
  <% end %>

Is it possible to use a changeset for the form in your use case? Then you can reset the changeset as you wish.

1 Like

I had tried that too, same effect:

<%= form_for Ecto.Changeset.change(%SomeSchema{}, %{}), ...

It doesn’t look like your form is using LV. If you are submitting the form with your own javascript, you likely need to handle clearing it as well.

Right, my form just happens to be on a liveview page.

I could generate the HTML manually. Maybe clearing it in javascript would work too. But I’m curious if there is no clearn way to use the builtin helpers to generate a form that will reset itself “naturally”.

The JS auto-submit is not the issue; if I remove it and add an input field for example, then submitting with <enter> has the same effect.

Shouldn’t submitting the form cause the entire page to reload? If you’re not using LV view to handle form submit, it seems like you have an issue with your JS of some kind. But to answer your question, I do not believe there is any specific Phoenix or LiveView utility to clear forms, aside from making the form “controlled” by a changeset as @APB9785 suggests, but that would require changing the changeset var when the form is submitted.