2011-02-01 5 views
0

GETフォームを介して送信された変数を取得するjavascript関数を実装しました。しかし、私はいくつかの複数の選択ドロップダウンがあり、GETを使用すると、選択されたすべてのオプションが別のパラメータとして送信されます。以下の複数の選択を検討:GETで複数選択を取得

   <select multiple="multiple" name="currencies"> 
        <option id="option1" value="option1">Option 1</option> 
        <option id="option1" value="option2">Option 2</option> 
        <option id="option3" value="option3">Option 3</option> 
       </select> 

私は2つまたはこれらの項目のすべてを選択し、これはGETのURLです:それは分割と

http://example.com/mypage.html?currencies=option1&currencies=option2 

したがって、JavaScript関数は、最初のオプションだけを取得します文字列に&が見つかった場合は、別の要素が見つかった場合に必要です。

方法はありますか?

http://example.com/mypage.html?currencies=option1,option2 

これはjQueryのを使用してJS関数です:

<script> 
function getQueryVariable(variable) { 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
     return pair[1]; 
    } 
    } 

} 
</script> 
+0

GETのURLの形式は、Web標準である - それはどこでも動作します。要求された選択肢はJSと一緒にハックされる可能性がありますが、@Davidが処理用のJSコードを標準で扱う方が良いと指摘しています。 – Rudu

答えて

3

機能だけで重複を発見し、それらを適切に処理するのに十分にスマートにする必要がある私は、好ましくはこのようなものであることをGETのURLが必要になります。例えば

var QueryString = function() { 
    // This function is anonymous, is executed immediately and 
    // the return value is assigned to QueryString! 
    var query_string = {}; 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
       // If first entry with this name 
    if (typeof query_string[pair[0]] === "undefined") { 
     query_string[pair[0]] = pair[1]; 
       // If second entry with this name 
    } else if (typeof query_string[pair[0]] === "string") { 
     var arr = [ query_string[pair[0]], pair[1] ]; 
     query_string[pair[0]] = arr; 
       // If third or later entry with this name 
    } else { 
     query_string[pair[0]].push(pair[1]); 
    } 
    } 
     return query_string; 
}(); 
+0

よく見えます。私はそれを試してみる。ありがとう – seedg

関連する問題