ThatWeirdProgrammer

ThatWeirdProgrammer

Is there a way to get value of element by click event on another element without using form for example

<input id="input1" />
<button type="button" :on-click="next" />

by clicking the button I pass value of input1 as param or access it somehow.

as far as I know only by using form and submit I can get input values or is there another way?

Showing Posts 1 to 8

kokolegorille

kokolegorille

Javascript can do that kind of interactivity…

I think there is a typo on :on-click.

Sebb

Sebb

You can use the Phoenix.HTML functions without form data. Never used that with a button, but as I understand the docs it should work.

Sebb

Sebb

This does not seem to work!

The idea was this:

<form action="" phx-change="changed">
  <%= text_input :user, :inp_1 %>
  <%= text_input :user, :inp_2 %>
  <%= submit :user %> <!-- not possible -->
</form>

When I change one of the inputs I get these params for "changed"

%{
  "_target" => ["user", "inp_2"],
  "user" => %{"inp_1" => "test 1", "inp_2" => "test 2"}
}

But you can’t trigger changed with a button.

This:

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.

is not applicable to submit

ThatWeirdProgrammer

ThatWeirdProgrammer OP

Thanks for trying, I guess the only solution is using JS hooks :pensive:

TwistingTwists

TwistingTwists

did you manage to figure it out using JS hooks?

soup

soup

    <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.

TwistingTwists

TwistingTwists

Hooks.EditableTag = {
  inputFieldSelector() { return this.el.dataset.input_elem },
  eventName() { return this.el.dataset.event_name },
  target() { return document.querySelector(this.el.dataset.target_selector) },
  mounted() {
    this.el.addEventListener("click", e => {
      let inputField = document.getElementById(this.inputFieldSelector())
      console.log(this.el.dataset);
      // this sends event to the live_component with `editable_tags` (non-live) component 
      this.pushEventTo(this.target(), this.eventName(), { tag: inputField.value })

    })
  }
}

This is how I achieved this. Pretty similar.

Thanks @soup

SurbhiRathi13

SurbhiRathi13

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?

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews