How to auto-fill fields based on info in others?

I need to fill in all the fields, based on information in another one automatically …
Ex: Through the “Customer Code” fill in the automatic “Customer Type” …

What should I do ??

Current Controller

  def new (conn, _params)
    changeset = Account.change_order (% Order {})
    cod_client = Repo.all (from (c in Client, select: {c.fantasia_cliente, c.cod_client}))
    client_type = Repo.all (from (c in Client, select: {c.client_type, c.client_type}))

     render (conn, "new.html", changeset: changeset,
      condemnation, condemnation,
      sales_codes: sales_codes,
      customer_code: customer_code,
      client_type: client_type)
  end

Current Template

  <div class = "form-group">
    <label> Client Type
     <div class = "input-group">
    <span class = "input-group-addon" id = "basic-addon1"> <i class = "fa fa-angle-double-down" aria-hidden = "true"> </ i>
    <% = select (f, :client_questions, @cod_client)%>
    </ div>
    <% = error_tag f, :client_questions %>
    </ label>
  </ div>

  <div class = "form-group">
    <label> Client Type
     <div class = "input-group">
    <span class = "input-group-addon" id = "basic-addon1"> <i class = "fa fa-angle-double-down" aria-hidden = "true"> </ i>
    <% = select (f, :tipocli_pedidos, @client_type)%>
    </ div>
    <% = error_tag f, :tipocli_pedidos %>
    </ label>
  </ div>

The problem You describe is related to frontend.

In frontend, JS can help You get a little bit reactive. Such as reacting to change events.

the link between code and type is not really clear, it could be having a lot of possibilities, to something that is limited. eg. select country from country_code.

In case of limited set, it might be better to load full data to client. This allow reactive change without data call.

If it is too costly to send all data, You would need to do ajax call, fetch call or websocket call, This way You will receive data from server, and You will incorporate those data with DOM manipulation.

Your solution lies in JS, or Drab :slight_smile:

Some possibilities…

  • jquery
  • unpoly
  • a larger framework (React, Angular, Ember, Elm etc.)

But if You want to keep it simple, You can try with Vanilla JS.