Without form data
Sometimes we may want to generate a text_input/3 or any other tag outside of a form. The functions in this module also support such usage by simply passing an atom as first argument instead of the form.
<input type="text" id="some-id" />
<button type="button" id="hooks-require-an-id" phx-hook="fun-time" data-target="#some-id">
Have Fun Time
</button>
let funTime = {
mounted() {
this.el.addEventListener("click", () => {
let valEl = document.querySelector(this.el.dataset.target)
// NOTE: valEl.value IS NOT the same as valEl.getAttribute("value")
// probably you also want to "if valEl" ... etc
alert(valEl.value)
})
}
}
This is one way to do it.
Possibly it would be nicer to put the hook on the form and dispatch events to it if you needed more than one button <-> input pairing. The original posts actual intent isn’t super clear. You can get the id’s of an input with the Phoenix.HTML.Form functions (called something like id_for_input?), as well as generating ids for the button etc if you want.
You can then push the value up in an event, or alter the value of another input with it and optionally dispatch an “input” event on that element to trigger the regular form on-change event.
What if we keep the submit button inside the form and pass the value from outside the form to the submit button. Will this be possible if there is not one but whole list of details of a student for example?