2017-11-15 13 views
2

を提出私のようなWebページを持っている選択オプションと、現在のページのURLパラメータ

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

私はnameパラメータ、現在のページからの選択値およびURLでこのフォームを提出する必要があります。例えば、ユーザがCompany1のを選んだ:index.php/vote/?company=company1&name=someName

は、私はこのようなフォームアクション変更してみました:

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 +"&"; 

をしかし、私はボタンを提出するとき、私はindex.php/vote/?company=company1にリダイレクトしています。そうname paramがあなたが少しの修正であなたのJSを使用することができ、入力の値を設定するには

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

のparams URLにこれを追加するタイプhiddeninputを形成するために追加することができます

答えて

3

が欠落している

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

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

またはPHP @Globusのような例

1

フォームポストは気にしませんあなたのjavascriptについて、それが喜んで何をしています。 GETパラメータに名前を格納するフォームに非表示フィールドを作成して、フォーム送信によってこのパラメータがURLに追加されるようにする必要があります。

にコードを変更し

<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> 
関連する問題