Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Submit select option and current page url parameter

I have webpage like: index.php/voting/?name=someName which has form with select options:

 <form id="voting-form" method="GET" action="index.php/vote/">
    <select name="company" id="company">
        <option value="company1">company 1</option>
        <option value="company2">company 2</option>
        <option value="company3">company 3</option>
    </select>

    <input type="submit" value="Submit">
</form>

I need to submit this form with select value and url name parameter from current page. For example user chose company1: index.php/vote/?company=company1&name=someName

I tried to modify form action like this:

 var url_string = window.location.href
 var url = new URL(url_string);
 var name = url.searchParams.get("name");
 document.getElementById('voting-form').action = "index.php/vote/?name=" + name +"&";

But when I submit button, I am redirected to index.php/vote/?company=company1. so name param is missing

like image 304
misha Avatar asked Dec 07 '25 08:12

misha


2 Answers

You can add to form input with type hidden to add this to url params

<input type="hidden" name="name" value"someName" id="nameInput">

To set value of input you can use your JS with a bit modification

var url = new URL(window.location.href),
    name = url.searchParams.get("name");

document.getElementById('nameInput').value = name;

or PHP like in @Globus example

like image 157
Sylwek Avatar answered Dec 09 '25 20:12

Sylwek


The form post doesn't care about your javascript, and does what it pleases. You should create a hidden field in your form where you store the name in your GET parameter, so that the form submission also adds this parameter to the URL.

Change your code to:

 <form id="voting-form" method="GET" action="index.php/vote/">
    <select name="company" id="company">
        <option value="company1">company 1</option>
        <option value="company2">company 2</option>
        <option value="company3">company 3</option>
    </select>

    <input name="name" value=<?=$_GET['name']?> type="hidden" />

    <input type="submit" value="Submit">
</form>
like image 24
Glubus Avatar answered Dec 09 '25 20:12

Glubus