2016-04-07 13 views
0

私はドロップダウンリストと入力フィールドを持っています。 ドロップダウンリストが変更されるとすぐにURLを変更したいと思います。OnChangeイベントのあるフォーム

<?php $s = $_GET["s"]; $q = $_GET["q"]; ?> 
<form method="get" action="" name="formulaire" > 
    <input type="text" name="q" value="<?php echo $q; ?>" /> 
    <select name="s" onchange="if (this.value) window.location.href=this.value"> 
    <option <?php if ($s == 'opt1') { echo 'value="opt1" selected="selected" >opt1 '; } else { echo 'value="opt1" >opt1 '; } ?></option> 
    <option <?php if ($s == 'opt2') { echo 'value="opt2" selected="selected" >opt2 '; } else { echo 'value="opt2" >opt2 '; } ?></option> 
    <option <?php if ($s == 'opt3') { echo 'value="opt3" selected="selected" >opt3 '; } else { echo 'value="opt3" >opt3 '; } ?></option> 
    </select> 
</form> 

今のように、入力フィールドがリストの前に入力されている場合にのみ実行されます。 value="?s=opt1"value="opt1"を置き換えようとしました。しかし、入力フィールドがいっぱいになると、URLは?q=test&s=%3Fs%3Dopt1のようになります。ここで

は私が期待していURLです:

のみテキスト領域が満たされている場合:?q=text

のみドロップダウンリストを選択した場合:?s=opt1

入力フィールドの場合とドロップダウンリストは、両方の/充填選択される:ここ?q=texte&s=opt1

は一例で:http://arkhana.fr/tempstack/menudyn.php

+0

は、あなたが入力フィールドを意味ですか? – Yuri

+0

申し訳ありませんが、入力フィールドを意味します。私は自分の投稿を編集しました。 – Guillaume

+0

'window.location.href'を設定すると、ページは与えられたアドレスにリダイレクトされます。これを確認してくださいhttp://stackoverflow.com/questions/4282069/add-a-fragment-to-the-url-without-causing-a-redirectirect – Yuri

答えて

1

これを試してください。 select onchange = "loadUrl()"を使用します。上記のようにoption value = "opt1"と仮定し、サンプルページにATMが表示されていない場合は?

入れページのスクリプト次のtextareaことで

function loadUrl() { 
    var params = []; 
    var inpVal = document.getElementsByName("q")[0].value; 
    if (inpVal.length) params.push("q="+inpVal); 
    var selVal = document.getElementsByName("s")[0].value; 
    if (selVal.length) params.push("s="+selVal); 

    window.location.search = params.join("&"); 
} 
+0

それはほとんど良いです、ありがとう。最後の問題は、リストの選択ボタンが常に閉じようとしていることです(私のサンプルページを参照)。 申し訳ありませんが、ATMは何か分かりません。 – Guillaume

+0

OK、それは動作します、ありがとう!私はちょうどあなたの編集を見た! – Guillaume

+0

ATM =現時点では...コードを変更したのを見ました。そして、私はバグを変えました;) – yezzz

関連する問題