Solution 1 :

Ajax is for “talking” to the server. If it’s just a case of change a <select> value and show/hide some fields, then put them on the page with style='display:none;' and show/hide them by changing that style, eg with jquery you can use:

 $(selector).show();

Some example code (there are, of course, many ways to do this, here’s one):

$("#picker").on("change", function() {
  $(".dogs,.cats").hide();
  $("." + $(this).val()).show();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Do you like:
<select id='picker'>
  <option value=''>please select</option>
  <option value='dogs'>dogs</option>
  <option value='cats'>cats</option>
</select>
<div class='dogs' style='display:none;'>
  which sort of dog:
  <select>
    <option>big</option>
    <option>sloppy</option>
    <option>yappy</option>
  </select>
</div>
<div class='cats' style='display:none;'>
  what type of cat:
  <select>
    <option>aloof</option>
    <option>independent</option>
    <option>house cat</option>
  </select>
</div>

Solution 2 :

If you really need to do something on the server when select field is changed, you may need to use ajax calls, if you don’t just hide the fields and show them depending on the select option.

Problem :

I need insert some input fields into a form on a website.

These fields will be inserted depending on the option that the user chooses in a <select> input.

What’s the right way?

A new request with ajax to add these fields, or simply keep all possible fields hidden, and show them according to the chosen option?

(I will not make any requests to a database)

Comments

Comment posted by Felipe Cristiano

Thank you so much!

Comment posted by freedomn-m

Worth noting, on the flip side, if your controls are overly complicate or use overlapping control ids/names in different locations (that make simple show/hide exceptionally messy) then, yes, use ajax to get the form. Unless you’re using SPA (single-page-application) then it may be better to put them on different pages if they’re particularly complicated.

By

Leave a Reply

Your email address will not be published. Required fields are marked *