Edwin Cruz
Edwin Cruz

Reputation: 13

Django - Change the route of sending a form based on dropdown

I am currently making a kind of internal search engine with multiple options in a dropdown, it works at first but I would like to change the form to get the urls based on the dropdown, so I can get:

example.com/search/**Option_Value_Here**/?q=my+query

I'm using Django as the framework

<form  action="/search/" method="get">
  <input name="q" id="query" value="{{ query }}" type="text" autocomplete="off">
    <select id="category" name="select-name" method="get">
      <option value="Jose">Jose</option>
      <option value="Mike">Mike</option>
      <option value="Mary_Ann">Mary Ann</option>
      <option value="chaplin">Chaplin</option>
     </select> 
  <input value="Search" class="fit" type="submit">
</form>

My question is if there is a way where I can change the path of the form action:

<form action="/search/{{ Option_Value_Here }}}/" method="get">

Thanks for your time.

Regards

Upvotes: 1

Views: 452

Answers (1)

Saturnix
Saturnix

Reputation: 10564

You can do that with JavaScript/jQuery.

<form id="myform">
...
</form>

$(".category").change(function(){
    value = $(this).val()
    $('.myform').attr('action', "/search/" + value)
});

Remember to place the code in a $(document).ready() listener.


Want to avoid JavaScript? You can get the value directly in the template. You cannot change that value if the user changes the dropdown value: in this case, your only chance is that of redirecting the user in your views.py based on what he choose in the dropdown.

Remember: Django simply renders a page and sends it to the user. Whatever happens before a new call is made to your server is not in the possibilities of Django but those of JavaScript.

Upvotes: 1

Related Questions